Excel formula 更改匹配条件时索引匹配结果

Excel formula 更改匹配条件时索引匹配结果,excel-formula,Excel Formula,我试图返回一行(特定单元格)中的输入值,其中与输入值位于同一行的输入日期与顶行的日期匹配 从这个论坛和其他研究中,我确定索引匹配函数是比vlookup更好的选择 我意识到index函数正在使用列引用从返回值,因此index match函数返回与匹配条件列号相关联的行号的结果 函数如下所示:=IF($E$3=$G$2:$L$2,INDEX($D:$D,MATCH($E$3,$G$2:$L$2,1))) 如果我想返回匹配发生的行特定值,那么除了使用“Index”函数外,还有什么替代方法呢?如果我正

我试图返回一行(特定单元格)中的输入值,其中与输入值位于同一行的输入日期与顶行的日期匹配

从这个论坛和其他研究中,我确定索引匹配函数是比vlookup更好的选择

我意识到index函数正在使用列引用从返回值,因此index match函数返回与匹配条件列号相关联的行号的结果

函数如下所示:=IF($E$3=$G$2:$L$2,INDEX($D:$D,MATCH($E$3,$G$2:$L$2,1)))


如果我想返回匹配发生的行特定值,那么除了使用“Index”函数外,还有什么替代方法呢?

如果我正确理解了您的问题,您想在单元格L3中返回“yes”,因为单元格L2与D3的日期相同,单元格L1的编号为6,而D列中的第6个单元格为“yes”

首先尝试在G2:L2中查找D3的日期:

=match($D$3,$G$2:$L$2,0)
使用0作为精确匹配的最后一个参数,不需要对范围进行排序。要从第1行返回值,需要将其包装在一个索引中,如

=index($G$1:$L$1,match($D$3,$G$2:$L$2,0))
这将返回您的
6
。现在您可以查看D列,并使用上面公式返回的数字作为索引

=index($D:$D,index($G$1:$L$1,match($D$3,$G$2:$L$2,0)))
最后,只有当D3中的日期出现在G2:L2中时,才需要执行此操作。有几种方法可以做到这一点,例如使用Countif

=if(countif($G$2:$L$2,$D$3),index($D:$D,index($G$1:$L$1,match($D$3,$G$2:$L$2,0))),"")
我甚至不需要将Countif的结果与任何东西进行比较,因为如果计数为0,则与FALSE相同,如果计数大于零,则与TRUE相同

让我知道这是否有帮助,或者你是否需要更多的澄清

评论后编辑

你可能想得太多了。我想你想要的公式就是这个,输入到G3单元格,然后向下复制

=IF(G$2=$D3,$C3,0)
换句话说:如果当前行D列的日期与当前列第2行的日期相同,则从当前行C列获取值,否则返回0


对不起,您的问题不清楚。您在IF语句中使用了格式错误的条件(无法将单元格与区域进行比较),并且使用1作为Match的最后一个参数,这要求Match查找值的区域按升序排序,而不是按升序排序。公式到哪里去了?预期结果是什么?L3单元格中的预期结果是300,G3:K3中的其余单元格应为0。这是因为E3中的日期在G2:L2范围内。那么,如果E3更改为2018年9月17日,那么300应该出现在I3中。第3行中G3:L3范围内的其余单元格应为0谢谢您的上述解释,但这正是我实际需要的。单元格L3中的预期结果为300,G3:K3中的其余单元格应为0。这是因为E3中的日期在G2:L2范围内。那么,如果E3更改为2018年9月17日,那么300应该出现在I3中。第3行G3:L3范围内的其余单元格应为0