添付した表のセル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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/10/25 09:26
- Excel(エクセル) エクセルの数式について教えてください。 2 2023/03/04 09:54
- Excel(エクセル) エクセルについて教えてください。 1 2023/03/03 08:38
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/28 08:59
- Excel(エクセル) エクセルの数式について教えてください。 2 2023/02/18 11:30
- Excel(エクセル) エクセルの数式で教えてください。 5 2023/02/10 15:11
- Excel(エクセル) エクセルの表示形式について教えてください あるセルの「A」という値と、別のセルの「B」という値を組み 4 2023/02/21 21:55
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/04/21 08:59
- Excel(エクセル) 関数式を教えてください。 AとBのセルがあり、Aのセルに値がある場合はCのセルへ1と表示。 AとBの 5 2022/03/23 14:38
- Excel(エクセル) エクセルで、 A1セルに「A」という値、 B1セルに「B」という値が入っています。 どちらも表示形式 5 2023/02/22 23:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelについて教えてください
-
【マクロ】名前を保存する際に...
-
エクセル マクロ チェックボックス
-
Excel 複数列 A列B列C列一致 D...
-
エクセル vbaについて教えてく...
-
エクセルであるセルに数字を入...
-
【Excel】数字を3倍にし、なお...
-
Excel分析ツールでのポアソン回...
-
エクセルVBA、別ブックへ転記す...
-
【マクロ】顧客番号にて一致さ...
-
Excelでセルの値が同じか...
-
(マクロ)データをAブックからB...
-
エクセルを使っていて2024/5/15...
-
エクセル共有したが、アクセス...
-
エクセル②
-
エクセルのデーターが2か月前の...
-
UNIQUE関数が使えないバージョ...
-
INDIRECTを使わず excelで複数...
-
Excelで縦軸の書式を0:00形式の...
-
【マクロ】読取専用のファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報
皆様回答頂きありがとうございます!大変助かりました!
元データがおかしいのかなとも思ったのですが、二進法による問題だったのですね…大変勉強になりました!
皆様がBAなのですが、最も分かりやすく、代替式も書いていただいた方をBAにさせていただきます!
回答頂きありがとうございましたm(__)m