我有一张表,我想根据行和列标签提取数据。因此,我在 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_num
和column_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 将保存该单元格中更改的公式。我猜他们总是喜欢把一些坏的和好的一起分发。
我希望这对你有帮助,祝你好运。