こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel関数:vlookup関数について

Excel関数:vlookup関数について

前回質問した内容に関連したことですが、vlookupで四番目の引数[検索の型]を省略した場合、対象となる検索値が見つからない時に、近似値を引っ張ってくるということなのですが、前回私が困った問題においては、対象となる検索値があったにも関わらず、「検索の型」を省略したことで、対応する値を正しく引っ張ってきてくれませんでした。
=vlookup(year()&"/"&month(),B:C,2)という式において、2010/1~2010/8までは対応する値を引っ張ってきますが、2010/9以降は正しくない値を引っ張ってきました。2010/9は2010/12に対応する値を、2010/10~2010/12は2010/1に対応する値を引っ張ってきていました。
この理由を教えて頂きければと思います。すみませんが、宜しくお願いいたします。

投稿日時 - 2010-03-22 03:11:40

QNo.5769996

すぐに回答ほしいです

質問者が選んだベストアンサー

>四番目の引数[検索の型]を省略した場合、対象となる検索値が見つからない時に、近似値を引っ張ってくるということなのですが

省略した場合,探しに行く先の左端列(今回はB列)を昇順に並べ替えておかないと,正しい結果を得られません。近似値ではなくジャスト値を見つける事も出来なくなります。

で。今回のでは特に,
こう思っていた?:
<<< 2010/9 < 2010/10 < 2010/11
小さい←          →大きい

でもエクセル的には:
2010/1 < 2010/10 < 2010/11 <<<< 2010/9
の順序が正しい昇順なので,計算を間違えました。


[どうすれば良かったのか]
方法1
B列に
2010/1/1
2010/2/1
 :
2010/10/1
2010/11/1
2010/12/1
とデータを入れてセルの書式によって「yyyy/m」を表示させ,
関数も
=VLOOKUP(年月日,B:C,2)
とすれば正解でした。

方法2:
B列を
2010/01
2010/02
 :
2010/09
2010/10
2010/11
2010/12
としておき,関数は例えば
=VLOOKUP(TEXT(年月日,"yyyy/mm"),B:C,2)
としておいても出来ました。

投稿日時 - 2010-03-22 04:14:08

ANo.1

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

元の日付データがA1に入っているとして
=vlookup(TEXT(A1,"y/m"),B:C,2)
と、しても駄目ですか?
あと検索対象としているB列はちゃんとソートしていますか?

加えて言えばデータを呼び出す方法としては
私は個人的にこのVLOOKUPは色々な意味で嫌いです
検索キーがソートされていないと駄目とか
検索キーが左にないと駄目とか
他ブックへの参照機能を秘めているため鈍重だとか
etc
他にも様々なデータを呼び出す方法がありますが
それらを試されては如何ですか

動作速度の向上とワークセルの削減が望めると思いますよ

投稿日時 - 2010-03-22 17:26:22

ANo.2

検索の型をFALSEかTRUEにすることが必要です。FALSEの場合には例えばB列では昇順で並んでいる必要はありませんが、TRUEの場合には昇順で並んでいることが絶対に必要です。その場合には検索値に一致する値が無いときは、検索値よりも小さい値の最大値が検索されることになっています。
ところで検索の型を省略した場合にはTRUEの場合と同じ結果になります。
昇順でデータが並んでいる場合で、しかも各月が1行ずつのデータでしたら対応する値を引っ張ってきますが同じ月が並んだりしている場合にはもはや正常な値を引き出すことは難しくなりますね。ましてや昇順でデータが並んでいない場合には結果はでたらめになってきます。8月まで正常であったのはそれまでは各月のデータが1行であったからでしょう。

投稿日時 - 2010-03-22 10:26:18

あなたにオススメの質問