Excel匹配函数未正确处理数组参数

时间:2016-05-03 15:34:26

标签: excel excel-formula

我创建了以下查询

=MATCH(TRUE, ISNUMBER(SEARCH({"a","b","c","d"}, "b")), 0)

它返回2,因为b是数组{“a”,“b”,“c”,“d”}中的第二个参数 但是当我用数据范围替换硬编码数组时,即

=MATCH(TRUE, ISNUMBER(SEARCH(A1:A4, "b")), 0)

查询返回#N / A,即使A1包含a,A2包含b,A3包含c,A4包含d。

为什么它不工作以及如何解决?我正在使用搜索功能,因为我正在搜索“模糊匹配”,可能是通配符不是精确的(然后我会使用vlookup)。

我在线使用excel 365。

修改 经过一些实验后发现

=SEARCH(A1:A2, "a")

返回#Value!即使

= SEARCH({“a”,“b”},“a”)

返回1.如何修复它以获得我想要的结果?

2 个答案:

答案 0 :(得分:1)

办公室应用程序在线只允许最基本的公式,所以没有CSE数组公式。

为什么一个版本的公式需要Ctrl-Shift-Enter而另一个版本不需要,是函数的设计。由于我们大多数人没有设计SEARCH功能,因此很难回答原因。

有阵列功能,不需要Ctrl-Shift-Enter。

对于在线版本,您需要使用Aggregate()函数:

=AGGREGATE(15,6,ROW(1:4)/ (ISNUMBER(SEARCH(A1:A4, "b"))), 1)

或者您可以使用SUMPRODUCT():

=SUMPRODUCT((ROW(A1:A4))*(ISNUMBER(SEARCH(A1:A4,"b"))))

这将返回行:

enter image description here

答案 1 :(得分:0)

你需要一个数组公式:

enter image description here

必须使用 Ctrl + Shift + 输入输入

数组公式,而不仅仅是 Enter key。

另一种方法是使用:

=MATCH("b",A1:A4,0)