为什么 Match("text", A:A) 函数不能处理 Excel 中的文本

Why is Match("text", A:A) function not working with text in Excel

为什么这个公式不起作用:

我希望得到 1 而不是 2。

正如@JvdV 建议的那样,您必须为 excel 的旧版本指定第三个参数 Match_Type

=MATCH("s",A:A,0)

但是对于 Excel365Google-Sheets 你可以省略这个参数并且 excel 将使用默认参数。

短篇小说

Match()Vlookup()的正确使用方法是总是在最新的可选参数处写False,以便得到你需要的——准确的值位置或错误,如果它不存在。因此:

=MATCH("s",A:A,False) 'or 0 instead of False

长话短说

什么是 False 默认行为?这个根据 Match() documentation:

MATCH finds the first value that is exactly equal to lookup_value. The values in the lookup_array argument can be in any order.

回到我们的问题 - 为什么它不起作用?因为默认参数[match_type]设置为1,也就是Less Than or Equal:

  • 如果您需要使用 -11 作为可选的 match_type 参数,则必须对值进行排序以 return 一些有意义的见解。

然而,这个公式中的“小于或等于”(默认 match_type 参数)是什么?如果你问 Excel 这是它的想法:

="a">"s" 'False
="a"<"s" 'True
="a"="s" 'False

但是,它仍然出了点问题。为什么它开始评估和比较第二个值 "a" 并 returned 它的位置,就好像从第一个单元格开始就满足“小于或等于”条件一样?这确实使事情变得有趣,因为 Excel 的其他“隐藏”功能来到这里 - 例如.

于是,它开始与"a"进行比较,发现小于或等于并return调整了它的位置。工作完成!

为了完全失去所有人,如果您将问题中的公式更改为 =MATCH("s";A1:A2),它将 return 您所期望的,因此被检查的第一个单元格的最后函数取决于范围的类型。