所以,我有一個Excel工作表,看起來像以下內容:(IVE取出所有irelevant信息)奇怪的問題與計算,當我用if語句
列D
是有公式被拖累到所有細胞(改變行號):
=IF(A2 = "",$D1-C2,A2 - C2)
如果你看到細胞D6
你會發現它有某種錯誤。我包括2個例子。該表的下半部分正確使用相同的公式。第一部分是不工作,我認爲它是因爲0.985,它似乎只發生在0.9以上但低於1時。
是否有人能夠幫助找出問題所在?
所以,我有一個Excel工作表,看起來像以下內容:(IVE取出所有irelevant信息)奇怪的問題與計算,當我用if語句
列D
是有公式被拖累到所有細胞(改變行號):
=IF(A2 = "",$D1-C2,A2 - C2)
如果你看到細胞D6
你會發現它有某種錯誤。我包括2個例子。該表的下半部分正確使用相同的公式。第一部分是不工作,我認爲它是因爲0.985,它似乎只發生在0.9以上但低於1時。
是否有人能夠幫助找出問題所在?
看起來像浮點數字上的舍入誤差(有關更多信息,請參見IEEE floating point)。您可以通過在某些小數位數上使用round
來解決此問題,例如, round(D6, 3)
會將D6舍入到小數點後3位,以獲得更好的精度,如果這是您需要的。
認爲可能是這種情況。由於我的公司工作的公司沒有任何命名約定,因爲它有超過300,000條記錄在不同的文件中進行更改,所以只是有點猶豫。謝謝回答。 – 2013-02-13 07:23:35
這不是一個錯誤,它是科學記數法。它顯示的值是3.33*10^(-16)
,或者是0.00000000000000333067(希望我可以正確計數)。
這基本上是一個舍入誤差。如果您希望列的值接近於零時顯示零,則將該列格式化爲數字有限的小數位數。
對不起,我的意思是它輸出的內容是錯誤的(不是錯誤的E錯誤),因爲它肯定應該是一致的?將其格式化爲一個數字的問題是,我有其他公式引用該單元格和VBA,我想我還必須對這些數據進行一些舍入處理?或者當我在VBA中引用格式化的單元格值時? – 2013-02-13 07:17:47
有趣的小圓整的事情正在進行。如果所有的1都是1,並且.985正好是.985,並且錯誤仍然出現,那麼給定它的大小,我會將D列繞到ROUND(<您當前的公式>,0)最近的整數。 – chuff 2013-02-13 07:19:42