2012年11月21日水曜日

ExcelのVLOOKUP関数の紹介

Excelで2つのテーブルをマージして、マージしたテーブルの特定の列がほしいと考えた。Rのmergeを思いついたが、わざわざRを使うのも面倒そうなので、Excelでmergeのような関数はないかと調べてみたら、VLOOKUPという便利な関数があったので紹介しておく。マージというのは、あるテーブルのキーを基準にテーブルを結合するというものである。例えば次のようになる。

名前身長
Aさん170
Bさん165
Cさん173

名前体重
Aさん70
Cさん65
Bさん58

これらを名前をキーにしてマージすると以下のようになる。それぞれの体型が1つのテーブルとしてまとめられている。VLOOKUP関数では名前・身長の表から体重を含む表を参照し、体重列を横につけることを実現する。

名前身長体重
Aさん17070
Bさん16558
Cさん17365

さて、VLOOKUP関数の定義としては、次のようになる。

VLOOKUP(調べたい対象,範囲,列番号,論理値)

各引数について順に説明する。

  • 第1引数の「調べたい対象」は、第2引数の「探索範囲」でどこにあるかを調べたいものを入れる。
  • 第2引数の「探索範囲」はマージしたいテーブルと考えて差し支えない。通常、長方形状の範囲が選択されるはず。別シートの範囲を選択する場合は、sheet2!$A$1:$D$100のように!を使ってシート名を明記する必要がある。探索は左端の列から順に行う。
  • 第3引数の「列番号」は「探索範囲」で「調べたい対象」があった行の何列目を取り出したいかということを指定する。シートで何列目かではなく、探索範囲の何列目かを指定する必要がある。
  • 第4引数の「論理値」は完全一致のデータを探索する場合は、falseを指定すればよい。

上の例について考える。もし二つの表がsheet1とsheet2の「A1:B4の範囲(ヘッダも含めて)」にあったとすれば、sheet1のC2セルは次のように書けば、マージしたときと同等の値が得られる。A2の箇所はAさんを対象にしたものなので、Bさん、Cさんのマージ結果を得たい場合は、A3やA4とすればよい。

=VLOOKUP(A2,sheet2!$A$2:$B$4,2,false)

なお、一致するデータが複数あった場合は、先に見つかった方の結果のみが返ってくることに注意。

0 件のコメント:

コメントを投稿

フォロワー

ページビューの合計