在Excel 2010,Windows 7中,我遇到以下奇怪的MATCH
功能行为。
在A1
,在类型0.81
,选择A1:B1
,点击Fill->Series,在step value
框中输入0.01
,那么我们就0.82
在B1
。
在中A2
,输入0.82
,然后在B2
中输入公式:
=MATCH(A2,A1:B1,0)
然后,我们将出现#N/A
错误,整个过程如下所示:
0.81 0.82
0.82 #N/A
但是当我手动输入0.82
时B1
,一切正常,是Bug还是这两个数字在某种意义上有所不同?我试过了
TYPE(B1)=TYPE(A2) and B1=A2
它们都返回TRUE
,什么公式可以表明它们不同?
好问题
这是一个精度问题...........尽管B1看起来与A2完全匹配,但事实并非如此。有很近,很近。如此接近以至于= A2 = B1都将返回True。
但是它们距离MATCH()尚远,无法正常工作。
编辑#1:
要检查B1和A2之间的区别,请运行以下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()函数还将显示它们不相等。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句