我创建了以下查询
=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.如何修复它以获得我想要的结果?
答案 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"))))
这将返回行:
答案 1 :(得分:0)