2017-09-05 78 views
0

我想讓vba計算出某些值,並只在我的電子表格中顯示答案。雖然這在大多數情況下工作正常,但我的答案之一是四捨五入錯誤。Excel VBA自動舍入

在相關單元而不是顯示12,950.2217,它只顯示12,950.9200。

這是我的公式:

Sheet2.Cells(i, 19).Value = Sheet2.Cells(i, 6).Value - Sheet2.Cells(i, 18).Value 

我想這可能是與聲明變量,但所有其他的公式是工作的罰款。

感謝

回答

1

,以避免在編程舍入誤差的最佳方式,當您使用浮點數的工作,是使用十進制轉換。

在VBA它應該是這樣的:

cells(1,1) = CDec(cells(2,1))-CDec(cells(3,1)) 

CDecdecimal的想法是,它避免了浮點數的誤差。 Why Are Floating Point Numbers Inaccurate?

+1

儘管浮點數不準確,但減去兩個數字似乎不太可能導致大約0.7的錯誤,如原始文章中所述。還有一些其他的錯誤...... – Noceo

0

我懷疑你的單元格應用了貨幣格式。使用Value2而不是Value

Sheet2.Cells(i, 19).Value2 = Sheet2.Cells(i, 6).Value2 - Sheet2.Cells(i, 18).Value2 
0

沒有什麼不對您的代碼。因此代碼將提供正確的結果。試試這個代碼。

With Sheet2.Rows(i) 
    Debug.print .Cells(19).Value = .Cells(6).Value - .Cells(18).Value 
End With 

這會將正確的結果打印到立即窗口。 因此,該錯誤與單元格的NumberFormat顯示舍入結果。檢查號碼格式。

0

感謝您的所有答覆。最後,增加Value2似乎解決了這個問題。目前還不完全清楚爲什麼有些人沒有小數點問題,而另一些人則沒有。似乎只有在公式爲x - y時出現小數點問題的那個。對於涉及分割和乘法的公式,它是可以的。