Excelで設定した単純なIF構文の関数で発生している事象です。
あるExcel上の表で、数値を入力後その値の有効性を検算するセルがあります。
2つの方法で入力した値がイコールであれば「OK」、イコールで無ければ「NG」と表示される様に、
IF構文で「=IF(セルA-セルB=0,"OK","NG")」と設定してあるのですが、0であるはずのセルの一部がOKになりません。
単純にこれだけであれば、見かけ0だけど実際は0でないからじゃない?とか思うのですが、以下の様に
(1)セルA-セルBの計算を別のセルで行い、そのセルの値が0かどうか判断するIF構文を組むとOKになる
(2)元の数式を「セルA-セルB=0」から「セルA=セルB」とするとOKになる
など、計算結果としては確実に0になっていると判断しています。
数式自体直してしまえば特に問題は発生しないので重要な要素では無いのですが、何故このような事象が発生するか不思議だったので質問してみました。
条件付き書式などの設定はありません。
使用しているExcelは2010ですが2003でも同様な結果になりました。
もし何か情報をお持ちの方いらっしゃいましたらご教授頂ければ幸いです。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
No.1さん、No.3さんのおっしゃるような、コンピュータが勝手に近似値を使うことによって生じる計算誤差を回避する方法はいくつか考えられると思いますが、ROUND関数で処理することも一つです。
例えばB1セルに誤差を生む可能性のある式が入力されているなら、「=round(b1,5)」といった具合に、「最終的な計算結果に影響を与えないほど小さな端数を除くことのできる適当な桁数で丸める」ということです。これにより、0.1が入力されているセルと0.1の近似値となるセルの差がゼロになるようにできます。ベストアンサーは辞退します。No.3
- 回答日時:
ご質問の状況は、2進数で表せない小数点以下の数字の演算(特に引き算)を行う場合に発生します。
例えばA1セルに「0.1」と手入力し、B1セルに「=1-0.9」のような演算結果での「0.1」を表示しておくと、=A1-B1は「0」と表示されていますが、実際は「0」ではありません。
例えば、数式を「=(A1-B1)*1」として、そのセルの表示形式を「数値」にして小数点以下の桁数を30桁にしてみると、「0.000000000000000027755575615629 」のように0ではないことがわかります。
一方、=A1=B1とした場合は、「TRUE」を返しますが、これはエクセルで数値を扱う場合、10のマイナス16乗以下の数値はエクセルが自動的に数字を丸めて同じ数字として判断するためと思われます。
このように、2つのセルが等しいと判断される場合でも、引き算すると表示は「0」でも実際の数字は0にならないケースが小数点以下の数字を取り扱う場合(例えば時間を計算する場合など)には頻繁に発生しますので、大小関係を判定する数式などを作成する場合には注意が必要です。
No.1
- 回答日時:
実際の値のデータが判らないので推測ですが
良くあるケースとして
浮動小数点の丸め誤差の問題があります。
Excel で浮動小数点演算の結果が正しくない場合がある
http://support.microsoft.com/kb/78113/ja
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel 特定セルの数値を参照したセルの0表示が空白にならないのはどうしてか? 3 2022/04/28 22:23
- 会計ソフト・業務用ソフト Excel IF構文内の計算式を有効にする方法 2 2023/03/22 11:27
- Excel(エクセル) エクセルでIF関数中にIFERROR関数を使いたいのですが???? 5 2022/04/08 13:24
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) エクセルの自動更新のタイミングについて 1 2022/07/20 16:12
- Excel(エクセル) エクセル 自動計算 1 2023/01/30 13:28
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Excel(エクセル) 重複しているか否かをソートせずに判断する方法ありますか? 2 2022/07/06 21:16
- Excel(エクセル) WORKDAY関数 4 2023/06/08 13:23
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
excel 関数にて文字を0として認識させる方法
その他(Microsoft Office)
-
【エクセル】関数で「A1が0でないならB1を表示」の式
その他(コンピューター・テクノロジー)
-
あるセルの値を認識しないのですが、何が悪いのでしょうか?
Excel(エクセル)
-
-
4
IF関数で0より大きい数値が入力されたら「あ」と表示、文字列の場合は空白としたい
Excel(エクセル)
-
5
条件付書式で「=#N/A」に色を付けたい
Excel(エクセル)
-
6
エクセルでエラーが出て困っています。
Excel(エクセル)
-
7
&関数で、数字の先頭の「0」を認識させる
Excel(エクセル)
-
8
特定セルの内容を更新したら、その更新日を自動的に表示する方法について
Excel(エクセル)
-
9
EXCELで2つの数値のうち大きい方を採択する数式
Excel(エクセル)
-
10
エクセル 関数 セルの値が0だったら 他の文字を代入する
Excel(エクセル)
-
11
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
12
excelグラフでデータテーブルを一部分のみ表示できますか。
Excel(エクセル)
-
13
エクセルで関数計算後の値を数字として認識させる方法を教えて下さい
Excel(エクセル)
-
14
Eエクセルの計算方法で空欄を0とみなすやり方をお教え願います。
Excel(エクセル)
-
15
空白セル内の数式を残したままで空白セル扱いとしたいのですが
Excel(エクセル)
-
16
エクセルのセル参照、一つずつ参照セルをずらしていきたい
Excel(エクセル)
-
17
ACCESS データ型の一括変更
Access(アクセス)
-
18
【エクセル】0以外が入力されていれば1を立てる計算式について
Excel(エクセル)
-
19
Excelで重複データの件数ではなく、何番目かを求める方法
Excel(エクセル)
-
20
あるセルに色を付けた時、別のセルにも同じ色が付く
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで数式内の文字色を一部だ...
-
対象セル内(複数)が埋まった...
-
エクセルで指定したセルのどれ...
-
エクセル 足して割る
-
エクセル “13ヶ月”を“1年1ヶ月...
-
Excelでのコメント表示位置
-
excelのCOUNTIF関数で、『範囲=...
-
エクセルの一つのセルに複数の...
-
【Excel】 セルの色での判断は...
-
貼り付けで複数セルに貼り付けたい
-
【エクセル】IF関数 Aまたは...
-
EXCEL VBA セルに既に入...
-
エクセルのセルの枠を超えて文...
-
複数のセルのいずれかに数字が...
-
枠に収まらない文字を非表示に...
-
セルの高さ(行高)を求めるには?
-
セルをクリック⇒そのセルに入力...
-
Excel2003 の『コメント』の編...
-
EXCELのセルの中の半角カンマの...
-
Excelで教えてください。 バー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
セルをクリック⇒そのセルに入力...
-
Excelで数式内の文字色を一部だ...
-
エクセル 足して割る
-
対象セル内(複数)が埋まった...
-
貼り付けで複数セルに貼り付けたい
-
Excelでのコメント表示位置
-
エクセルのセルの枠を超えて文...
-
エクセル オートフィルタで絞...
-
エクセルの一つのセルに複数の...
-
EXCEL VBA セルに既に入...
-
【Excel】 セルの色での判断は...
-
(Excel)数字記入セルの数値の後...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
excelのCOUNTIF関数で、『範囲=...
-
Excel2003 の『コメント』の編...
-
枠に収まらない文字を非表示に...
-
Excelで住所を2つ(町名迄と番...
-
複数のセルのいずれかに数字が...
おすすめ情報