[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『vlookup関数の検索の型の0省略について』(至急ちゃん)
vlookup関数の0は省略してもよいといろいろなところに書いてあり、省略していたのですが、0を入れるとちゃんと表示されるが、 省略するとN/Aエラーになる場合がありました。これはどのように解釈すればよろしいでしょうか? おわかりになるかた、ぜひ教えてくださいm(__)m
>いろいろなところに書いてあり いろいろなところにその理由も書いてあるはずです。
検索の型 ゼロ(FALSE) を使う場合、 「ゼロ」は省略してもいいけど「カンマ」は省略したらダメ。
(GobGob)
>vlookup関数の0は省略してもよいといろいろなところに書いてあり どのような説明で記載されていたのでしょう?
VLOOKUP関数ヘルプより
VLOOKUP(検索値, 範囲, 列番号, [検索の型])
検索の型 省略可能です。VLOOKUP を使用して検索値と完全に一致する値だけを検索するか、 その近似値を含めて検索するかを指定する論理値です。
TRUE を指定するか省略すると、検索値と完全に一致する値、またはその近似値が返されます。 完全に一致する値が見つからない場合は、検索値未満の最大値が使用されます
以上 抜粋
ヘルプ記載の省略とは VLOOKUP(検索値, 範囲, 列番号) ということを指しています ですから VLOOKUP(検索値, 範囲, 列番号,TRUE) VLOOKUP(検索値, 範囲, 列番号) は 同じことになります
同様に VLOOKUP(検索値, 範囲, 列番号,FALSE) VLOOKUP(検索値, 範囲, 列番号,0) は 同じことになります
0の省略とは VLOOKUP(検索値, 範囲, 列番号,) を指していると思います
>0を入れるとちゃんと表示されるが、 >省略するとN/Aエラーになる場合がありました。 >これはどのように解釈すればよろしいでしょうか?
検索の型に0(False)を指定したときと省略(Trueと同じ)したときでは、 検索のアルゴリズムが違います。
省略(True)時は、範囲の左端列は昇順に並べられているという大前提があります。
例
新規ブックのD列、E列に以下のデータを記述して下さい。
D E 1 項目1 項目2 2 7 A 3 6 B 4 5 C 5 4 D 6 3 E 7 2 F 8 1 G
というデータがあるときに セルA1に3と入力し、 セルB1に =VLOOKUP(A1,$D$2:$E$8,2,0) と指定すると Eと正しく表示されますが・・・。 セルB2に =VLOOKUP(A1,$D$2:$E$8,2) と指定すると確かに #N/A と表示され、エラーになります。
VlookUp関数の中身を見たわけではないので想像でしかありませんが、 検索の型に0を指定した場合は、逐次検索のアルゴリズムを採用していると思われます。 よって、範囲の左端列を検索値で最初から比較していき、一致したデータを検索します。
省略(True)した場合は、2分探索というアルゴリズムで検索しているはずです。 (これは、以前VBAで同じ結果になるように作成したことがあるのでほぼ正しい) Vlookupの2分探索は、範囲の左端が昇順に並べられていることが前提です。
2分探索とは、範囲の真ん中の値と検索値を比べて上か下か判断します。 これで範囲を狭めていって最後には目的の値を見つける方法です。 プログラミングの検索ロジックですが、プログラミングをしない人でも そのロジックだけでも知っていて損はないと思いますよ。
この方法で検証すると、範囲の左端の真ん中のデータは、セルD5の4です。 セルA1の値3は、4と比べて小さいので、Vlookup関数は、4より小さい数があるはずの (Vookup関数は、範囲の左端は昇順に並べられていると思っている) D2:D4を次の検索範囲にしてしまい、実際に3があるD6を見ることはありません。
よって、結果見つからないという#N/Aが表示されます。
検索範囲の左端列はどうなっていますか?
ichinose@昨日、ゲリラ豪雨の雨のカーテンを肉眼で確認 8/9 20:12 訂正
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.