
添付した表のセルI2に113.879と表示されていることが確認できると思いますが、(ABS($D$2:$D$7921-H2)>=0.3)の0.3を0.299に変えると113.862が表示されます。
ABS(113.862-113.562)=0.3のため、式が0.3のままでも113.862が表示されるべきだと思うのですが、なぜ表示されないのでしょうか?
ちなみにI3以下のセルはI2をオートフィルしたものなのですが、I6ではちゃんと0.3ピッタリの値でも表示されています。
どなたか原因が分かる方いませんか?

No.5ベストアンサー
- 回答日時:
>どなたか原因が分かる方いませんか?
とのご質問ですが、既に複数の方が指摘しておられます。
以下のURLをご覧ください。
https://en-light.net/archives/30482
EXCEL内部ではIEEE754の規格に基づき2進数で浮動小数点運算が行われています。小数点以下の数値は場合によって2進数の無限小数となりますが、EXCELのセル数値の有効桁数は15桁のためどうしても誤差が生じます。
ご質問のケースもこれが原因で思った結果にならないということです。
これを回避するには、計算桁数を予め決めてしまう方法があります。
ご質問者の掲示された表をみるとデータは小数点以下3桁で入力されているように見えます。もしかしたらそれ以上の桁数のデータを表示形式で小数点以下3桁に見せているのかも知れません。
仮に、表示形式で小数点以下3桁に見せているのだとしても、計算精度を小数点以下3桁と決めてしまえば、見えている状態で計算した結果と一致することになります。
そこで、I2に
=INDEX(FILTER($D$2:$D$7921,(ROUND(ABS($D$2:$D$7921-H2),3)>=0.3)*($A$2:$A$7921=F2)*($B$2:$B$7921>=G2)),1)
という数式を記述し、下方向へオートフィルするという方法はいかがでしょうか?
No.4
- 回答日時:
》 なぜ表示されないのでしょうか?
Excelに限らず、PCには、小数点を含む計算は苦手という弱点があるからです。
式 =(ABS($D$2:$D$7921-H2) の結果は 0.3 とお思いでしょうが、生来の弱点のために、Excel は 0.299999999999999… と思い込んでいるのです。
》 I6ではちゃんと0.3ピッタリの値でも表示されています
弱点はショッチュー発生するわけではないので、たまにはそうなりますよ。
=ABS(A1*1000-A2*1000)/1000
だと、1000で割るまでは小数点のない計算だから…
No.3
- 回答日時:
その数値が計算結果の0.3ではなく0.3と入力していればそれは0.3ですがABS(113.862-113.562)の計算結果を数値にし小数点以下の桁数を増やしていくと0.299999999999997となり0.3とはなりません。
表は通貨で小数点以下は固定のようなので以下のように元の数値を1000倍して整数にしてから結果を1000で割れば正しく計算できます。
ABS(113862-113562)/1000
または
ROUND(ABS(113.862-113.562),3)
おまけ
=(0.3-0.2-0.1)
と
=0.3-0.2-0.1
と結果を比べてみてください。
No.1
- 回答日時:
>どなたか原因が分かる方いませんか?
今回の原因かはわかりませんが、
コンピュータの内部は2進数で計算しているの知ってますか?
ABS(113.862-113.562)=0.3
本当?
整数同士の差ならいざ知らず、小数以下を含む数は、厳密にいえば近似値ですよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
Excelで『+』と『&』って何が違うのですか?
Excel(エクセル)
-
日時毎に整理された4列のデータを1列に直したいです。
Excel(エクセル)
-
Excel エクセルってなんですか? なぜ人気があるのかも教えてください
Excel(エクセル)
-
4
Excelの式でどうしても理解出来ない式があります。
Excel(エクセル)
-
5
Excel関数について 下記の業務をもっと効率よく出来る関数がないか悩んでます(´;Д;`) ※質屋
Excel(エクセル)
-
6
エクセルで数字が日付になる方法
Excel(エクセル)
-
7
条件付き sumif できますか
Excel(エクセル)
-
8
エクセルで、行列を入れ替える、エクセルで、縦横入れ替える+貼り付け先の書式に合わせるを同時にする方法
Excel(エクセル)
-
9
Excelでシフトを制作しています。 1人1人お休みの日を打ち込んでいるのですが、中には決まった曜日
Excel(エクセル)
-
10
これも MS社の WinUpdate の不始末か!?
Excel(エクセル)
-
11
Excel 同じセルの隣のセルを並び替える
Excel(エクセル)
-
12
エクセルについての質問です 条件付き書式設定 XLOOKUP
Excel(エクセル)
-
13
excelについて質問です
Excel(エクセル)
-
14
Excelでセル同士のうちで、一部でも合致した場合、その値を返す方法はないでしょうか?
Excel(エクセル)
-
15
エクセルで複数のシートのデーターを抽出する方法を知りたいです。
Excel(エクセル)
-
16
数式組めますか?
Excel(エクセル)
-
17
Excel教えてほしいです。
Excel(エクセル)
-
18
Excel 上手い集計表の作り方、セット商品の集計
Excel(エクセル)
-
19
エクセルを取引先に渡したら何がわかるのか
Excel(エクセル)
-
20
エクセルのセル中で最初の0を表示する方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
このカテゴリの人気Q&Aランキング
-
4
EXCELで式からグラフを描くには?
-
5
エクセル近似曲線(範囲指定)
-
6
エクセルでの計算式数字を入れ...
-
7
excelのマクロ実行でブロックさ...
-
8
マクロの保存先、開いてるすべ...
-
9
エクセルで、変な矢印がでて、...
-
10
Excelのグラフの書き方
-
11
エクセルでマウスカーソルの形...
-
12
あるセルに特定の文字列を打つ...
-
13
A1セルに入力したら、入力時間...
-
14
Excelのグレーの部分を戻したい
-
15
エクセル: セルの枠を超えて表示
-
16
現時点の年齢を算出して、その...
-
17
エクセルの昇順での数値入力の...
-
18
縦書き文章で『―』表示を『|』...
-
19
エクセルでシフト表を作成中で...
-
20
生産日報と月間集計
おすすめ情報
公式facebook
公式twitter
皆様回答頂きありがとうございます!大変助かりました!
元データがおかしいのかなとも思ったのですが、二進法による問題だったのですね…大変勉強になりました!
皆様がBAなのですが、最も分かりやすく、代替式も書いていただいた方をBAにさせていただきます!
回答頂きありがとうございましたm(__)m