我目前正在努力解决我一直遇到的这个问题。我试图使用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以分钟为单位。
答案 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)))
<强>解释强>
要解决的主要问题是($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=1
和FALSE=0
。
所以现在我们有MATCH(1,{0,0,1},0)
更有意义。在这种情况下,它将返回3
。唯一的问题是我们在将数组相乘时使用数组公式,因此我们需要使用 Ctrl + Shift + 输入输入公式,或者更方便的是,将数组部分包装在SUMPRODUCT
公式中。
SUMPRODUCT(MATCH(1,{0,0,1},0))=3
符合预期,INDEX
功能正常工作。