有効数字の精度の維持(Microsoft Excel)
ケンは、Excelに入力された値の有効桁数を維持することが可能かどうか尋ねました。たとえば、「12.345600」と「1.230」です。
短い答え、ケン、あなたはできないということです。どうして? Excelは常にすべてを内部で有効数字15桁に変換するためです。これは、12、12.0、または12.00000と入力すると、真の数学的な意味で技術的に正しくない場合でも、Excelは常にこれらを12.0000000000000と同じと見なします。さらに、Excelはすべてを有効数字15桁に変換するため、一般数値形式を使用して表示される数値の末尾のゼロは切り捨てられます。
(上記の説明から、「有効桁数」、「精度」、「小数点以下の桁数」という用語はまったく異なる意味であることが明らかです。たとえば、12.000の数値は小数点以下3桁ですが、有効桁数は5桁です。 (私が間違っている場合、聴衆の数学理論家は私を訂正するのにとても喜んでいると確信しています。)
個々のセルにカスタム数値形式を使用して、適切な有効桁数を使用した情報ですが、これはExcelの内部動作には影響しません。たとえば、セルをフォーマットして12、12.0、または12.00000を表示できますが、Excelがすべての数値を次のように考慮するという事実は変わりません。
この問題を回避する1つの方法は、数字の前にアポストロフィを付けて、数字をテキストとして入力することです。つまり、12.0を入力する代わりに、「12.0」と入力します。Excel次に、エントリをテキストとして解析します(aposのため) trophe)、セルに12.0を表示します。このアプローチの唯一の欠点は、すべての数学関数でセルを直接参照できないことです。 Excelがテキストと見なすものを関数に含めているため、エラーを返すものもあります。これを処理する最も簡単な方法は、式全体の一部として= VALUE関数を含めることを確認することです。たとえば、セルB7にテキストとして数値を入力し、それを数式で参照する必要がある場合は、次のように実行できます。
=VALUE(B7) * 100
これは、単一セル参照のある数式に最適です。ただし、範囲参照には適していません。テキストとして入力された値の範囲で合計または平均を実行する必要がある場合、Excelは毎回チョークし、関数が実行しようとしていることに基づいてエラーを返します。
これにより、2番目の解決策が導き出されます。有効桁数または小数点以下の桁数を実際の値とは別に維持することです。多くの技術的な数学的目的のために、これは状況を処理するための最良の方法です。たとえば、列Cに、数値として数値を入力できます。もちろん、Excelはそれらを内部で15桁の有効数字に変換します。列Dには、列Cの値に適用する小数点以下の桁数を表すさまざまな数値を入力できます。次に、列Dの値を使用して、列Cの値を参照する数式を作成できます。
最終的な解決策は、表示する小数点以下の桁数のみが表示されるように、個々のセルを単純にフォーマットすることです。
上記の警告(このような書式設定はExcelによる数値の内部表現に影響を与えない)を使用すると、これが最善の解決策になる可能性があります。もちろん、いくつかのセルの表示フォーマットを個別に調整するのは簡単ですが、100または500セルに調整するのは別の話です。これは、マクロが役立つ場合があります。次のマクロについて考えてみます。
Sub SigPlaces() Dim c As Range Dim strcell As String, NumFormat As String, DecSep As String Dim DecPtLoc As Integer, stringLen As Integer Dim numDecPlaces As Long DecSep = "." For Each c In Selection.Cells strcell = c.Value If IsNumeric(strcell) Then NumFormat = "#0" DecPtLoc = InStr(strcell, DecSep) If DecPtLoc > 0 Then NumFormat = NumFormat & DecSep stringLen = Len(strcell) numDecPlaces = stringLen - DecPtLoc NumFormat = NumFormat & String(numDecPlaces, "0") End If c.Value = Val(strcell) c.NumberFormat = NumFormat End If Next c End Sub
数値をテキストとして入力すると(上記のアポストロフィを使用)、セルを選択してこのマクロを実行できます。テキストエントリは数値に変換され、それらのセルに適用されるフォーマットが変更されて、テキストエントリに入力したのと同じ小数点以下の桁数が表示されます。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(2045)は、Microsoft Excel 97、2000、2002、および2003に適用されます。