0

中的数据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 中使用,我会得到更多意想不到的结果。

4

2 回答 2

3

如果为“match_type”参数(MATCH 的第三个参数)指定 1,则 Excel 需要对数组进行排序。显然,Excel 对值进行二进制搜索 - 从中​​间开始并在搜索 1 时找到中间值(在您的情况下是第 5 个值)。

如果您为“match_type”指定 0,您将得到您所期望的 - 至少在这种情况下是这样。有关更多信息,请参阅 MATCH 函数的文档。

于 2010-03-02T14:40:43.440 回答
0

解决此问题的一种方法是将空白变为错误。

试试这些公式:

=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”来确认它们。

于 2010-04-05T21:18:10.983 回答