- ベストアンサー
Excelで計算結果が違う(VLOOKUP)
ある表があるのですが、 同じ数値になるはずの計算結果が同じ数値にならず、違うのです。 少しわかりづらいとは思いますが、 心当たりのある方はご教授お願いします。 ↓こんな表があります。↓ A B C 1 計算 量 単価 2 数値1 0 399 3 数値2 1 399 4 計算1 2 399 5 計算2 3 399 6 4 399 7 5 399 8 6 399 9 7 399 10 8 399 11 9 399 12 10 399 13 11 388 数値1に「11」と入れて、数値2に「0」と入れて下さい。 計算1には「=A1-A2」と入れて下さい。 計算2には「=VLOOKUP(A4,B2:C122,2,1)」と入れて下さい。 入れ終わると、計算1には「11」と、計算2には「388」と、出るはずです。 この表は、数値1から数値2を引いて出た数値を VLOOKUPで「量」と照合して「単価」を持ってくる。という表です。 次に、計算1と計算2は変えずに、 数値1に「72.6」と入れて、数値2に「61.6」と入れて下さい。 これは先ほどやった数値1(11)-数値2(0)と同じ計算結果になるはずです。 しかし、数値を入力してみると、計算2には「399」と出てしまうのです。 ここで悩んでおります。 VLOOKUPの検索の型は、小数点以下での照合があるため、「TRUE」にしてあります。 「FALSE」にすると、#N/Aエラーになります。(11-0は11と出ます) これはExcel(VLOOKUP)のバグなのでしょうか? 私には原因不明です。この表は仕事で使う表で、私が作ったものです。 普段の仕事で使うため、なるべく早く回答を頂きたいと思っております。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。maruru01です。 いわゆる、浮動小数点誤差というものです。 Excelでは、小数の計算には注意する必要があります。 以下のページに、浮動小数点誤差についてと対処方法があります。 http://pc21.nikkeibp.co.jp/special/gosa/ 今回の場合だと、使用しないだろう桁数(小数点以下4桁とか5桁とか)で四捨五入をしてから、検索するという方法になると思います。
その他の回答 (5)
- popesyu
- ベストアンサー率36% (1782/4883)
十進数を二進数で計算するために出るバグです。 これは仕様。 有名なところでは下の式を試してください。0にはなりません。 =(1.1-1-0.1) 今回の結果は見た目は11でも実際は10.99999.....になっているため、Vlookupでは10を検索しています。
お礼
回答ありがとうございました。 今回は浮動小数点誤差というものが原因だったようで・・・ 無事解決できました。 今回はどうもありがとうございました。 また何かありましたらどうぞよろしくお願い致します。m(_ _)m
- snoopy64
- ベストアンサー率42% (337/793)
EXCELのバグというよりも、有効桁数の問題です。 11-0も72.6-61.6も、計算上は確かに11です。 ですが、コンピュータ上では小さい桁のところで誤差を持っています。 (そういうもんだと納得してください。) ですから、今回のような場合は、 「=VLOOKUP(INT(A4),B2:C122,2,1)」 のように、意識して丸めてください。 頑張ってくださいヽ(^。^)ノ
お礼
回答ありがとうございました。 今回は浮動小数点誤差というものが原因だったようで・・・ 無事解決できました。 今回はどうもありがとうございました。 また何かありましたらどうぞよろしくお願い致します。m(_ _)m
- samtyan
- ベストアンサー率20% (59/292)
計算1は、「=A2-A3」 ですよね。 どう違うか検証していませんが。。。
お礼
回答ありがとうございました。 今回は浮動小数点誤差というものが原因だったようで・・・ 無事解決できました。 今回はどうもありがとうございました。 また何かありましたらどうぞよろしくお願い致します。m(_ _)m
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
小数点以下の演算で丸め誤差が発生し、そういう結果になります。 適当なところでround()するか、「表示桁数で計算」オプションを使 いましょう。
お礼
回答ありがとうございました。 今回は浮動小数点誤差というものが原因だったようで・・・ 無事解決できました。 今回はどうもありがとうございました。 また何かありましたらどうぞよろしくお願い致します。m(_ _)m
- chupark
- ベストアンサー率41% (90/218)
VLOOKUPの対象とする表はキーとなる列が 昇順に並んでいる必要があったのではないでしょうか。 ヘルプファイルか何かに書いてあったような気がします。 記憶違いだったらごめんなさい。
お礼
回答ありがとうございました。 今回は浮動小数点誤差というものが原因だったようで・・・ 無事解決できました。 今回はどうもありがとうございました。 また何かありましたらどうぞよろしくお願い致します。m(_ _)m
お礼
回答ありがとうございました。 今回は浮動小数点誤差というものが原因だったようで・・・ 無事解決できました。 今回はどうもありがとうございました。 また何かありましたらどうぞよろしくお願い致します。m(_ _)m