2017-10-12 31 views
0

我試圖在Excel中對包含長整數的數字進行一些計算。在Excel中對長整數進行存儲和執行計算而不進行四捨五入

但是,Excel似乎沒有讓我用我想要使用的數字填充單元格。

例子:

  • 如果我進入600000.00000000030000000000到一個標準的細胞上一種新的電子表格 ,它被轉換爲60萬。作爲 單元格的格式設置爲常規這是有道理的。
  • 如果我將單元格格式設置爲Number並將小數位數 的位置設置爲20,我希望能夠正確輸入數字。

相反,600000.00000000030000000000被轉換爲600000.00000000000000000000。

有誰知道爲什麼會發生這種情況?

+0

Excel只能存儲多達15位有效數字。 –

+0

您可以將單元格更改爲文本格式,並手動輸入總數位數。 –

+0

看來文本格式對於計算無效。但它可以與VBA一起使用來進行計算。 – LG8

回答

1

Excel僅存儲15位有效數字。除此之外的任何數字都會自動變爲四捨五入,無論數字格式如何

首先將單元格設置爲文本格式將數字存儲爲一個字符串,其數目儘可能多,但Excel無法對其執行任何計算。

但是,VBA可以使用十進制類型變量進行計算,該變量可以存儲多達29個有效數字。

如果您首先將值存儲爲Excel中的文本(在輸入值之前將單元格數字格式設置爲文本),則可以在VBA中創建用戶定義的函數以讀取字符串值,將其轉換爲十進制值,執行你的計算,然後返回一個字符串,計算完整的精度。

例如:

Function PrecisionSum(ra As Range) As String 

    'Declare variables holding high precision Decimal values as Variants 
    Dim decSum As Variant 

    'This loop will sum values from all cells in input range 
    For Each raCell In ra 
     'Read values from input cells, converting the strings to Decimals using CDec function 
     decSum = decSum + CDec(raCell.Value) 
    Next raCell 

    'Return calculated result as a String 
    PrecisionSum = Format(decSum, "0.00000000000000000000") 

End Function 

Img

你需要編寫函數來完成,你的願望的操作。

請注意,您仍將受到在VBA中使用的任何功能的準確性的限制。例如,返回數字的平方根的SQR函數僅返回一個Double精度的數字,無論輸入的精度如何。

+0

我希望通過用戶界面來解決這個問題,但它看起來像VBA是最好的前進方向。感謝您的詳細反饋。 – LG8

-1

您可以嘗試使用指數(科學)符號?

0

這與Excel可以處理的數字精度有關。我注意到,如果刪除整數部分,我可以很好地顯示.00000000030000000000部分。也許你可以爲你的整數有一個單獨的列,對小數部分進行計算,然後再次添加整數部分。 你可以查看維基百科關於這個問題 - 通過添加600,000,你基本上增加了6e5 + 3e-8,Excel必須與cummulative比特深度一起工作。 Numeric precision in Microsoft Excel