我想讓vba計算出某些值,並只在我的電子表格中顯示答案。雖然這在大多數情況下工作正常,但我的答案之一是四捨五入錯誤。Excel VBA自動舍入
在相關單元而不是顯示12,950.2217,它只顯示12,950.9200。
這是我的公式:
Sheet2.Cells(i, 19).Value = Sheet2.Cells(i, 6).Value - Sheet2.Cells(i, 18).Value
我想這可能是與聲明變量,但所有其他的公式是工作的罰款。
感謝
我想讓vba計算出某些值,並只在我的電子表格中顯示答案。雖然這在大多數情況下工作正常,但我的答案之一是四捨五入錯誤。Excel VBA自動舍入
在相關單元而不是顯示12,950.2217,它只顯示12,950.9200。
這是我的公式:
Sheet2.Cells(i, 19).Value = Sheet2.Cells(i, 6).Value - Sheet2.Cells(i, 18).Value
我想這可能是與聲明變量,但所有其他的公式是工作的罰款。
感謝
,以避免在編程舍入誤差的最佳方式,當您使用浮點數的工作,是使用十進制轉換。
在VBA它應該是這樣的:
cells(1,1) = CDec(cells(2,1))-CDec(cells(3,1))
的CDec
或decimal
在淨的想法是,它避免了浮點數的誤差。 Why Are Floating Point Numbers Inaccurate?
我懷疑你的單元格應用了貨幣格式。使用Value2
而不是Value
:
Sheet2.Cells(i, 19).Value2 = Sheet2.Cells(i, 6).Value2 - Sheet2.Cells(i, 18).Value2
沒有什麼不對您的代碼。因此代碼將提供正確的結果。試試這個代碼。
With Sheet2.Rows(i)
Debug.print .Cells(19).Value = .Cells(6).Value - .Cells(18).Value
End With
這會將正確的結果打印到立即窗口。 因此,該錯誤與單元格的NumberFormat顯示舍入結果。檢查號碼格式。
感謝您的所有答覆。最後,增加Value2似乎解決了這個問題。目前還不完全清楚爲什麼有些人沒有小數點問題,而另一些人則沒有。似乎只有在公式爲x - y時出現小數點問題的那個。對於涉及分割和乘法的公式,它是可以的。
儘管浮點數不準確,但減去兩個數字似乎不太可能導致大約0.7的錯誤,如原始文章中所述。還有一些其他的錯誤...... – Noceo