[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『正しく0と表示させる方法はありますか?』( kentackie )
Excel2000, WindowsXP
=SUM(Q5:Q26) のように関数を入れて計算させたところ、合計値が0になる場合だけ、 5.66214E-15 と表示されます。 (Q5:Q26の枠内には、他に関数を入れ数値を表示するようにしています) 正しく0と表示させる方法はありますか?
5.66214E-15 ↑この数値はsumで計算した数式内の数値ですね? このセルをコピーして、どこか他のセルに「値」に変換して、数式バーを見てください。 数式バーも 5.66214E-15 になってますか? もしなってたら、[ツール] メニューの [オプション] →[計算方法]タブの[表示桁数で計算する] にチェック OK。 これで数式バーに 0.00000000000000566 と表示されると思います。
たぶん 計算結果が 0 では無く演算誤差が出てると思います。 誤差を関数などで 0 にする、等が考えられます。
[Excel で浮動小数点演算の結果が正しくない場合がある] http://support.microsoft.com/kb/78113/ja
なお、上記の[表示桁数で計算する] にチェックで 「データの正確さが失われます。元に戻せません」のメッセージが出ると思います。 データのバックアップをとってから試してください。 (jun53)
Helpを、ありがとうございます☆
●はい。SUM関数を入れてあるセル内の表示です。 合計値が 0 以外になるようにデータを変えて見ると、0.01 -0.03 のように正しく表示されます。
>5.66214E-15 >↑この数値はsumで計算した数式内の数値ですね?
●Q列以外のセルに、例えばO列にコピーした場合、数式バー内は、=SUM(O5:O26)となり、 コピーしたセル内の表示は 0 になります(実際の O5:O26 内のセルは空白です)。 然し、コピーしたO列のセル内の関数 =SUM(O5:O26)を、手入力して、 コピー元と同じ=SUM(Q5:Q26)に訂正すると、また可笑しな表示 1.21014E-14 になりました。
=SUM(Q5:Q26)の、 Q5:Q26 の各セル内には、 他の関数で出した数値 [0が11個] [0.9が1個] [-0.3が3個]が表示されていますが、 手計算したところ、Q5:Q26 内の答えは合っています。なので、合計は 0 で間違いありません。 やはり、合計値が 0 の時だけ、変な表示になります。
>このセルをコピーして、どこか他のセルに「値」に変換して、数式バーを見てください。 >数式バーも 5.66214E-15 になってますか? >もしなってたら、[ツール] メニューの [オプション] >→[計算方法]タブの[表示桁数で計算する] にチェック OK。 >これで数式バーに >0.00000000000000566 >と表示されると思います。
>たぶん >計算結果が 0 では無く演算誤差が出てると思います。 >誤差を関数などで 0 にする、等が考えられます。
1)セルの表示形式を教えて下さい(標準とかxx桁の数値とか、なるべく詳しく)
2)合計値が 0 で変な表示になるセルに直接 0 を手入力してみて下さい。 これは「元に戻す」の操作で簡単に元に戻ります。0手入力でも変な表示になりますか?
3)>他の関数で出した数値、 ↑これは、SUM以外の関数も使ってる、のですね? 可能なら、=SUM(Q5:Q26) の Q5:Q26 のデータ(数値?)と 「他の関数」をどのように使ってるのか?を教えて下さい。 例えば、Q5:Q26 のデータが端数のない数値なのか、 計算式は、=SUM(Q5:Q26)/COUNT(Q5:Q26) とか。
通常、数値での0が 1.21014E-14 等に表示されるのは考えにくいのですが。 考えられる可能性として、シートあるいはブックがおかしくなってる。 これは新規ブックで同様作業をしてみると確認出来ますね。 もう一つは、元データに端数が有る、計算方法、使用する関数で誤差が発生してる。 関数によっては誤差や精度が落ちるものが有るようです。
ほかにも原因がありそうですが、私の思考が固まってるのか思いつきません。 別角度からの回答もお待ち下さい。 (jun53)
1)セルの表示形式を何度か調節してみても、変わらないので、現在は標準にしています。
2)手入力では0と表示されました。
3)★ =SUM(Q5:Q26)のセル内には、このような関数を入れております。
=IF($L14="B",IF($H14>$Q$4,-$Q$4,-G14),0)
式の中で参照している G14,H14,のセルには、=F10-C10 のような引き算を、
L14,のセルには、=IF(D13>J12,"B",IF(E13<K12,"S","-"))の式をいれています。
$Q$4 のところは、セルに手入力した係数を変化させて使います。
★ 新しいBOOKにコピーしても同じに再現されます。
★ 元データは、190.02 のような、小数点2桁までの数値になっております。
宜しくお願い致します。
複雑な計算方法をされてるのですね。
>手計算したところ、Q5:Q26 内の答えは合っています。なので、合計は 0 で間違いありません。 前回このように書かれてますが、
> 2)手入力では0と表示されました。 本当の0なら「0と表示される」ので、 やはり私には、 どこかのセルに演算誤差が発生してるのだと思います。 前回も提案しましたが言葉が足りなかったようなので、もう一度書きますね。
簡単な計算で =190.03-190.02 表示形式「標準」で、答えが 0.01 ですね このセルをコピーして、どこか他のセルに、右クリックから「形式を選択して貼り付け」から「値」にチェックして、OK 数式バーには 0.00999999999999091 が表示されます。 コンピュータ内部ではこのように計算してるようです。 また、このセルの表示形式を「ユーザー定義」で 0.00000000000000000 などと、小数点以下の桁を増やします。例は17桁ですが、30桁まで設定出来るようですよ。
=F10-C10 や Q5:Q26 の中でこのような事が発生し、それを SUM(Q5:Q26) してる訳ですね。 =F10-C10 や Q5:Q26 や SUM(Q5:Q26) も、コピーして「値」に変換して確認して下さい。
対策の一つとして、どこかの数式の段階で、 ROUND や TRUNC などで差し支えない程度の桁数処理をする。 桁数処理で、今までとは違った結果になるかもしれません。
小数計算で発生する「誤差」 http://pc.nikkeibp.co.jp/pc21/special/gosa/eg1.shtml
あと、私の返信はモタモタしてます、返信まで時間がかかります。 もしお急ぎのようなら、「どなたかわかる方、Helpをお願いします」 とでも書き添えて下さい。 たくさんの方が返信してくれると思います。 (jun53)
エクセル自体の計算方法が理解で来たので、=ROUND(SUM(Q5:Q26),2)と関数を訂正し、0が表示されるようになりました。(*^。^ゞ
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.