2017-10-12 4 views
0

長い小数点を含む数値でExcelで計算を実行しようとしています。丸めを行わずにExcelで長い小数点での計算を保存して実行する

しかし、Excelでは、私が使用したい数値をセルに埋め込むことはできません。

例:

  • 私は新しい スプレッドシート上の標準セルに600000.00000000030000000000を入力した場合、それは セルの書式が全般に設定されているので、これは理にかなっている600000変換されます。
  • セルの形式をNumberに設定し、小数点以下を の位置を20に設定すると、適切に番号を入力できるようになります。

代わりに、600000.00000000030000000000は600000.00000000000000000000に変換されます。

これはなぜ起こるのか誰にも分かりますか?

+0

Excelには最大15桁の有効桁のみが格納されます。 –

+0

セルをテキスト形式に変更し、手動で合計桁数を入力できます。 –

+0

テキスト形式が計算に有効でないようです。しかし、VBAと組み合わせて計算を行うことができます。 – LG8

答えて

1

Excelには15桁の数値しか格納されません。数字のフォーマットに関係なく、それを超える数字は自動的に丸められます。

セルをテキスト形式に最初に設定すると、数値は必要な桁数の文字列として保存されますが、Excelでは計算が実行できません。

ただし、VBAは、29桁の有効数字を格納できるDecimal型変数を使用して計算を実行できます。

あなたが最初に(値を入力する前にテキストする細胞数の書式を設定する)Excelでテキストとして値を格納した場合、あなたは、文字列値を読み取るDecimal値に変換、実行する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関数は、入力の精度に関係なく倍精度の数値のみを返します。

+0

私はUIを介してこれを回避することを望んでいましたが、VBAが最善の方法であるように見えます。詳細な応答をありがとう。 – LG8

-1

指数(科学)表記を使用できますか?

0

これは、Excelで処理できる精度の数と関係があります。整数部分を削除すると.00000000030000000000部分が表示されることがわかりました。たぶん、あなたの整数のための別の列を持つことができます、小数部分の計算を行い、後で再び整数部分を追加します。 この問題に関するWikiをチェックすることができます.600,000を追加することで、基本的に6e5 + 3e-8を追加しています。これは、Excelがcummulativeビット深度で動作する必要があります。 Numeric precision in Microsoft Excel

関連する問題