[[20110808154115]] 『vlookup関数の検索の型の0省略について』(至急ちゃん) ページの最後に飛ぶ

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

 

『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.