中的数据TheRange
是{1,"",1,"",1,"",1,"",2}
。
=Match(2, TheRange, 1)
9
按预期返回。=Match(1.5, TheRange, 1)
7
按预期返回。=Match(1, TheRange, 1)
返回5
不是预期的。
有没有人遇到过这个?有没有人有修复?
此外,如果我Worksheet.Function.Match
在 VBA 中使用,我会得到更多意想不到的结果。
中的数据TheRange
是{1,"",1,"",1,"",1,"",2}
。
=Match(2, TheRange, 1)
9
按预期返回。
=Match(1.5, TheRange, 1)
7
按预期返回。
=Match(1, TheRange, 1)
返回5
不是预期的。
有没有人遇到过这个?有没有人有修复?
此外,如果我Worksheet.Function.Match
在 VBA 中使用,我会得到更多意想不到的结果。
如果为“match_type”参数(MATCH 的第三个参数)指定 1,则 Excel 需要对数组进行排序。显然,Excel 对值进行二进制搜索 - 从中间开始并在搜索 1 时找到中间值(在您的情况下是第 5 个值)。
如果您为“match_type”指定 0,您将得到您所期望的 - 至少在这种情况下是这样。有关更多信息,请参阅 MATCH 函数的文档。
解决此问题的一种方法是将空白变为错误。
试试这些公式:
=MATCH(1/(2),1/$A$1:$A$9,-1)
=MATCH(1/(1.5),1/$A$1:$A$9,-1)
=MATCH(1/(1),1/$A$1:$A$9,-1)
这些是数组公式,所以当你输入它们时,你必须用“ctrl+shift+enter”而不是“enter”来确认它们。