Excel匹配函数没有正确处理数组参数

我创build了以下查询

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

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

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

查询返回#N / A甚至认为A1包含a,A2包含b,A3包含c和A4包含d。

为什么它不工作,如何解决? 我正在使用searchfunction,因为我正在寻找可能与通配符不精确的“模糊匹配”(然后我会使用vlookup)。

我正在使用excel 365在线。

编辑:经过一些实验,结果是

 =SEARCH(A1:A2, "a") 

返回#Value! 即使

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

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

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

至于为什么你的公式的一个版本需要Ctrl-Shift-Enter,而另一个版本则不是这个函数的devise。 由于我们大多数人没有deviseSEARCHfunction,所以很难回答这个问题。

有数组function,不需要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")))) 

这将返回该行:

在这里输入图像说明

你需要一个数组公式:

在这里输入图像说明

数组公式必须使用Ctrl + Shift + Enterinput,而不仅仅是Enter键。

另一种方法是使用:

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