索引与时间范围之间的多个条件匹配(Excel)

时间:2017-02-27 23:19:52

标签: excel excel-formula

我目前正在努力解决我一直遇到的这个问题。我试图使用INDEX MATCH公式获得基于多个标准的值。以下数据集如下:

POST CLICKS TAB

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

PROSPECTS 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列之间的范围内)值,我想填写“post click”数据集中的“Channel”列。来自“Prospects”数据集的通道值。如您所见,第一行应填入“网站”,而最后两行应填写为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))

我还包含一个AND函数来包含2个逻辑,这样如果时间值落在时间段5和时间+ 5之间,那么它就会变为真。

有人可以帮忙解决这个问题吗?我尝试通过stackoverflow进行研究,发现了类似的问题但没有找到基于多个标准的值,其中一个在一个时间范围内。谢谢!

P.S。 -5和+5以分钟为单位。

1 个答案:

答案 0 :(得分:3)

试试这个:

=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 + Shift + 输入输入公式,或者更方便的是,将数组部分包装在SUMPRODUCT公式中。

SUMPRODUCT(MATCH(1,{0,0,1},0))=3符合预期,INDEX功能正常工作。