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)