2

在 Excel 2010、Windows 7 中,我遇到了以下奇怪的MATCH函数行为。

A1,输入,0.81然后选择A1:B1,单击Fill->Series,在step value框中输入0.01,然后我们0.82B1

在中,A2输入0.82,在 中B2,输入公式:

=MATCH(A2,A1:B1,0)

然后我们会有#N/A错误,整个事情看起来像这样:

0.81    0.82
0.82    #N/A

但是当我手动输入0.82B1,一切正常,这是一个错误还是这两个数字在某种意义上是不同的?我试过

TYPE(B1)=TYPE(A2) and B1=A2

它们都返回TRUE,有什么公式可以表明它们不同?

4

1 回答 1

2

好问题

这是一个精度问题............即使B1似乎与A2 完全匹配,但事实并非如此。有接近,非常接近;如此接近以至于=A2=B1也会返回True。

但它们离MATCH()还不够近,无法正常工作。

编辑#1:

要检查B1A2之间的差异,请运行此 VBA 宏:

Sub dural()
    Dim A2 As Range, B1 As Range
    Set A2 = Range("A2")
    Set B1 = Range("B1")
    v1 = A2.Value
    v2 = B1.Value
    MsgBox (v1 = v2) & vbCrLf & v1 - v2
End Sub

你应该看到:

-1.11022302462516E-16

如果没有 VBA,=DELTA()函数也会显示它们不相等。

于 2014-07-02T16:02:33.103 回答