2014-03-31 116 views
1

對不起,沒有給出更詳細的標題,但這是因爲這種特殊情況。我的谷歌搜索沒有給我任何類似的話題。excel vba異常(for循環結果)

下面的簡單代碼應該給一系列數字爲0.1〜10與步驟0.1在A列(I至少希望):

Cells(1, 1) = 0.1 
For i = 2 To 100 
Cells(i, 1) = Cells(i - 1, 1) + 0.1 
Next i 

直到5.9它工作得很好,但該結果是後不按預期:

,而不是6,我得到5,99999999999999

,而不是6.1我得到6,09999999999999

,而不是6.2我得到6,299999 99999999

...

誰能解釋一下什麼是錯的代碼,或者爲什麼我得到這樣的結果?

謝謝!

+1

您可能希望看到這一點:http://stackoverflow.com/questions/22322822/why-is-134-605100-not-equal-13460-5 -in-vba-access/22323581#22323581 –

+1

謝謝,在你的鏈接中我發現這個http://support.microsoft.com/kb/78113其中回答了我的問題。 – oort

回答

1

或者乾脆這樣?

Sub Sample() 
    Dim i As Long 

    For i = 1 To 100 
     '~~> Change Sheet1 to respective sheet 
     ThisWorkbook.Sheets("Sheet1").Cells(i, 1) = i * 0.1 
    Next i 
End Sub 

或者這樣

Sub Sample() 
    '~~> Change Sheet1 to respective sheet 
    With ThisWorkbook.Sheets("Sheet1").Range("A1:A100") 
     .Formula = "=Row()*.1" 
     .Value = .Value 
    End With 
End Sub 
+0

謝謝Siddharth Rout! – oort

+0

本來我一直在尋找爲什麼我得到錯誤的數字,而不是另一種解決方案,但當然感謝您的努力和答案! – oort

+0

是的,我知道,但自@simoco已經給了你一個鏈接,解釋說,我只是給你一個替代:) –