
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も見ています
-
【エクセル】関数で「A1が0でないならB1を表示」の式
その他(コンピューター・テクノロジー)
-
excel 関数にて文字を0として認識させる方法
その他(Microsoft Office)
-
あるセルの値を認識しないのですが、何が悪いのでしょうか?
Excel(エクセル)
-
-
4
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
5
IF関数で0より大きい数値が入力されたら「あ」と表示、文字列の場合は空白としたい
Excel(エクセル)
-
6
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
7
エクセルで関数計算後の値を数字として認識させる方法を教えて下さい
Excel(エクセル)
-
8
Excelで重複データの件数ではなく、何番目かを求める方法
Excel(エクセル)
-
9
Excelで、セル内改行もそっくりそのまま参照させたい
Excel(エクセル)
-
10
エクセルのセル参照、一つずつ参照セルをずらしていきたい
Excel(エクセル)
-
11
エクセル<引き算がおかしいです
Excel(エクセル)
-
12
計算結果が「0」のセルだけを「0」と表示したい。
Excel(エクセル)
-
13
エクセルで数式の答えを数値として参照したい
その他(Microsoft Office)
-
14
多数の計算セルに一括で同一の関数を追加したい
Excel(エクセル)
-
15
別シート参照のセルをシート毎にずらしたいです
Excel(エクセル)
-
16
EXCELで条件付き書式で空白セルの時は塗りつぶし無しにする方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
枠に収まらない文字を非表示に...
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
セルをクリック⇒そのセルに入力...
-
(Excel)数字記入セルの数値の後...
-
エクセルの書式設定の表示形式...
-
Excelで数式内の文字色を一部だ...
-
Excel2010の指マークと白十字マ...
-
【エクセル】IF関数 Aまたは...
-
EXCEL VBA セルに既に入...
-
Excelでのコメント表示位置
-
【Excel】 セルの色での判断は...
-
数式を残したまま、別のセルに...
-
エクセル オートフィルタで絞...
-
excelの特定のセルの隣のセル指...
-
エクセルの一つのセルに複数の...
-
エクセル 足して割る
-
対象セル内(複数)が埋まった...
-
エクセルVBA、ファイル名をセル...
-
Excel 例A(1+9) のように番地の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
excelの特定のセルの隣のセル指...
-
枠に収まらない文字を非表示に...
-
エクセルの書式設定の表示形式...
-
数式を残したまま、別のセルに...
-
【エクセル】IF関数 Aまたは...
-
セルをクリック⇒そのセルに入力...
-
(Excel)数字記入セルの数値の後...
-
Excelで、「特定のセル」に入力...
-
Excel 例A(1+9) のように番地の...
-
対象セル内(複数)が埋まった...
-
EXCEL VBA セルに既に入...
-
エクセルの一つのセルに複数の...
-
【Excel】 セルの色での判断は...
-
Excelで数式内の文字色を一部だ...
-
エクセルのセルの枠を超えて文...
-
エクセル オートフィルタで絞...
-
Excelでのコメント表示位置
-
連続しないセルから最小値を引...
おすすめ情報