[[20031225164735]] 『関数VLOOKUPについて』(はな) ページの最後に飛ぶ

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

 

『関数VLOOKUPについて』(はな)

ユーザー定義で0:00〜6:00(60進法)まで入力した
数字があり、右に十進法に直した数字を入れた範囲データが
あります。
しかし、その範囲データをもとにFALSE検索してもNAしかでません。
何が原因でしょうか?


 >ユーザー定義で0:00〜6:00(60進法)まで入力した数字
 表示形式のユーザー定義で「h:mm」を設定して時間を入力してあるということですよね。

 >右に十進法に直した数字を入れた範囲データ
 十進法というのがぴんときませんが、「分数」か、
 それともシリアル値を小数として表示しているかのどちらかだと思います。
 A列に0:00〜6:00、B列に「十進法に直した数字」を入力して
 この状態でC1に入力された「5:20」に相当するB列の値を
 =VLOOKUP(C1,A1:B301,2,False)
 とすれば検索できるはずですが、場合によっては結果が返らない場合があります。

 原因としては
 ことが考えられます。
 シリアル値は小数で表現されています。その小数が「誤差を含む」小数であるため
 ドラッグで作成したシリアル値の連続値は「誤差を含んだ」連続値となります。
 表示上は誤差をカバーして表示していますが、手入力のときとはわずかながら
 違う値になっているはずです。
 この結果、検索値で手入力した「5:20」とは「完全一致」しないために
 「#N/A」がかえります。

 対策としては
 これは大変。
 =VLOOKUP(C1,A1:B301,2,TRUE)
 では1分前の値が返ることがありますから×。
 下記のような式に差換えることで誤差は吸収できます。
 =SUMPRODUCT(((A1:A361*1440)=C1*1440)*(B1:B361))

 しかし、単に分数を求めたいだけなら表やVLOOKUPを使わなくても、
 出来そうな気がしますが・・・。
 =VALUE(TEXT(C1,"[m]"))
 とか・・・・。
 もしかして大はずしかも・・・。だとしたらゴメンナサイ。
 (KAMIYA)

コメント返信:

[ 一覧(最新更新順) ]


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