2017-02-27 335 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