2017-02-27 110 views
1

我目前正試圖解決我一直有的這個問題。我正在嘗試使用INDEX MATCH公式獲得基於多個標準的值。下面的數據集是以下供參考:索引匹配時間範圍(Excel)之間的多個條件

POST [點擊]標籤

Date Time Channel 
10/2/2016 1:36:27 AM 
10/13/2016 4:59:59 AM 
10/15/2016 7:21:30 PM 

前景TAB

Time Time -5 Time +5 Date Channel 
1:25:00 AM 1:20:00 AM 1:30:00 AM 10/2/2016 Website 
1:28:00 AM 1:23:00 AM 1:33:00 AM 10/2/2016 Website 
1:35:00 AM 1:30:00 AM 1:40:00 AM 10/2/2016 Website 

基於日期(精確匹配)和時間(在範圍之內所以基本上在Time-5和Time + 5列之間)值,我想用「Prospects」數據集中的通道值填寫「post click」數據集中的「Channel」列。正如你所看到的,第一行應該填寫「網站」,而最後兩行應該是N/A。

但是,當使用下面的公式時,所有的值都是N/A。

=INDEX('Prospects (2)'!$F$2:$F$27054,MATCH(1,(F2='Prospects (2)'!$D$2:$D$27054)*AND('Post Click'!G2>='Prospects (2)'!$B$2:$B$27054,'Post Click'!G2<='Prospects (2)'!$C$2:$C$27054,1),0)) 

我也包括了和功能包括2個邏輯,這樣,如果時間值列時間5和時間+ 5之間落在它會來的真實。

有人可以幫助解決這個問題嗎?我試着通過stackoverflow進行研究,發現類似的問題,但沒有獲得基於多個標準的值,並且其中一個標準是在一個時間範圍內。謝謝!

P.S. -5分鐘和+5分鐘。

回答

2

試試這個:

=INDEX($E$7:$E$9,SUMPRODUCT(MATCH(1,($B$7:$B$9<B2)*($C$7:$C$9>B2)*($D$7:$D$9=A2),0))) 

enter image description here

說明

這裏剖析,主要就是($B$7:$B$9<B2)*($C$7:$C$9>B2)*($D$7:$D$9=A2)它創造的TRUE/FALSE三個陣列,其相乘:

$B$7:$B$9<B2  *  $C$7:$C$9>B2 * $D$7:$D$9=A2  = 
    FALSE    FALSE    TRUE   0 
    FALSE    FALSE    TRUE   0 
    TRUE     TRUE     TRUE   1 

記住TRUE=1FALSE=0

所以現在我們有MATCH(1,{0,0,1},0)這使得更有意義。在這種情況下它將返回3。唯一的問題是,我們使用的陣列式當我們相乘的陣列一起,所以我們要麼需要使用Ctrl鍵 + + 輸入輸入公式,或更方便地,包裹在陣列部分一個SUMPRODUCT公式。

所以SUMPRODUCT(MATCH(1,{0,0,1},0))=3如預期的那樣並且INDEX函數正常工作。

+0

非常感謝你CallumDA。它完美的工作,但我只是有幾個問題,所以我可以理解公式。爲什麼使用sumproduct有什麼原因嗎?還有什麼1在比賽前面(參考? –

+0

嗨@HoyounLee,我已經更新添加一個解釋。如果回答您的問題,請接受答案(左側的勾號) – CallumDA