[[20040115134614]] 『vlookup関数の検索値に小数は使えない?』(F) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『vlookup関数の検索値に小数は使えない?』(F)

vlookup関数の検索値に小数を指定すると、思うように答えが返りません。どうしたらいいのでしょうか?

<例>

A列に 0 , 0.1 , 0.2 , 0.3 , 0.4 ・・・

B列に 0 , 1 , 2 , 3 , 4 ・・・

この2列を範囲指定で「aaa」とします。

C列に 0.1 , 0.2 , 0.3 , 0.4 ・・・

とあった場合、

D列に =vlookup(c1,aaa,2) の関数を指定すると、私としては 1 , 2 , 3 , 4 ・・・と返って欲しいのですが、なぜか 1 , 2 , 2 , 4 ・・・ と返ります。
0.3を認識していないというか・・・。

また同じような現象が、検索値=1.4 の時にも起こります。

データには中間の値(例えば 0.12 や 0.28 など)も存在するため、検索の型は TRUE(1) を指定しなければなりません。

ちなみに、検索値を10倍して、整数にすると思い通りの値が取れましたが、そんなことを考慮しなければならないのでしょうか?

教えてください。お願いします。


 0.3は実際は0.29とかで表示形式で0.3に見えているだけではないですか?(ケン)

 ケンさんの補足です。
 A1は関数、数式で求めた数値ではないですか?
 ヒットしない小数のセルと手入力した同じ値のセルを小数点以下15桁くらいにして
 比べてみてください。数値が違うことはありませんか?

 小数は計算上微妙な誤差が出ている場合があります。
 浮動小数点計算の場合、仕方がないので、有効桁数が整数になるように
 数値を調整すれば誤差はなくなります。
 ですから、
 >検索値を10倍して、整数にすると思い通りの値が取れましたが、
 >そんなことを考慮しなければならないのでしょうか?

 この問いの答えは「YES」です。
 (KAMIYA)


  ケンさん、KAMIYAさん、早速の回答をありがとうございました。
  KAMIYAさんの言う通り、A列は数式です。
  でも、0 , =A1+0.1 , =A2+0.1 , =A3+0.1 , =A4+0.1 ・・・
  となっているため、小数の誤差が出るとは思いませんでした。

  >>検索値を10倍して、整数にすると思い通りの値が取れましたが、
  >>そんなことを考慮しなければならないのでしょうか?

  >この問いの答えは「YES」です。

  小数以下のデータ取扱いは、難しいですね。
  ありがとうございました。
  (F)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.