Excel:当值位于行数组中时,获取 FALSE

Excel:当值位于行数组中时,获取 FALSE

我有一张表,我想根据行和列标签提取数据。因此,我在 MATCH 函数中使用带有数组的 INDEX MATCH,但我一直得到 #N/A,因为 b1:d1=d1 为 FALSE。这是为什么?

    1 2 3  
Jan x x o  
Feb x x x  
Mar x x x  

我想要的值在带有“o”的单元格中,因此我使用
INDEX(B2:D4, MATCH(1,(B2:D2=B2)*(B2:D2=D2), 0))

答案1

要在上述示例中返回 o,您需要

=INDEX(B2:D4,MATCH("Jan",A2:A4,0),MATCH(3,B1:D1,0))

答案2

的语法INDEX()是。您在公式中INDEX(array, row_num,[column_num])仅指定了row_num和。MATCH()

@RET 的公式将为您提供您正在寻找的单元格,因为它同时指定了row_numcolumn_num

Excel 有一个有用的功能可以解决这类问题。如果您选择包含公式的单元格,然后单击公式中某个函数的参数列表,您将看到一个下拉列表,其中显示参数应该是什么:

在此处输入图片描述

然后,单击下拉列表中的某个参数,突出显示 Excel 认为该参数在公式中的位置。仅此而已可以帮助您找到缺失的逗号和括号,但最有用的功能是当您按下 F9 键时 - 这会让 Excel 评估公式中突出显示的部分:

在此处输入图片描述

上面的截图显示(B2:D2=B2)*(B2:D2=D2)对数组的计算结果{0,0,0},这就是为什么MATCH()在其中找不到 1。

如果分别突出显示乘积的两个部分,您会发现(B2:D2=B2)计算结果为{True,True,False}并且(B2:D2=D2)计算结果为{False,False,True}。数组上的算术运算将True和转换False为1和0,并执行相当于逻辑的操作AND()。所以这就是为什么表达式计算结果为0的数组——没有True*True会给出1的。

笔记:如果您使用 F9 功能,请务必CTRL在之后键入 UNDO (-Z)。否则,如果您键入Return或跳出公式,Excel 将保存该单元格中更改的公式。我猜他们总是喜欢把一些坏的和好的一起分发。

我希望这对你有帮助,祝你好运。

相关内容