2014/02/20

ExcelのVLookUpの使い方

 エクセルに用意された強力(?)な検索機能VLookUp(ぶいるっくあっぷ)について書きます。
使い道は多いんですが、使い方が難しいので個人的にはVLookUpを設定したサンプルを常備してます。どういう時に使えるのか、まずこの説明が難しいので具体例挙げましょう。以下の時に力を発揮します。
  • 小学校の教室で、「出席番号」と「名前」の出席簿と、出席番号で班分けしたリストがあるとき、各班の名簿(出席番号と名前)を作るにはどうしたらよいでしょう?
出席簿が以下、
 1 綾小路キミ麻呂
 2 伊藤博文
 3 上野比佐
 4 江頭二時五十分
で班分けが以下
 一班 1、3
 二班 2、4
で欲しい結果が
 一班 1:綾小路キミ麻呂 3:上野比佐
 二班 2:伊藤博文    4:江頭二時五十分
です。小学校の班分けに嫌な思い出がある人も少なくないのではないでしょうか。分かりずらいと思いますが上野比佐は麻雀がすごく強い人のつもりです。
このくらいなら人力で簡単ですが、人数が増えた時、機械的にやろうとすると意外と困ってしまうはずです。エクセルのVLookUpはまさにこのためにあります。

構文はこう。
 =VLOOKUP( 検索値のセル,  検索対象テーブルの区画,  検索対象テーブルから引っ張ってくる値の列数,  あいまい検索)
引数はもっと自由なのだが大抵こういう形で使うでしょう。最後のあいまい検索は通常の検索をしたいなら省略可能。つまり
 =VLOOKUP( 検索値のセル,  検索対象テーブルの区画,  検索対象テーブルから引っ張ってくる値の列数 )
で良いです。
例で言うと
 =VLOOKUP( 班の出席番号のセル,   出席簿の区画,   出席簿の2列目が名前なので「2」)
となるようにします。出席簿の区画と出席簿の2列目の値を引っ張ってくる、のは変えず、班の出席番号のセルだけ連番になるようにします。
 
  実際のエクセル画像で言うとまず上図の状態です。Excel2010の機能でテーブルの見た目が良くなってます。
式を設定しています。「E5」が班の1人目の出席番号のセル。出席簿の範囲は「B4:C18」ですが、以降で連続で設定するため、$でアンカーリングします。今回は横にはずらさないので「B$4:C$18」にしましたが「$B$4 : $C$18」とするとより確実です。
一行目でエンターを押して確定するとエクセルの機能で一班が全員設定されました(!)。「E5」から「E9」まで勝手に設定されています。普通は最初のセルだけ設定して二行目以降はズルズル引きずって設定します。その設定方法も一応載せます。
二班の最初のセルにVLookUpを設定し、そのセルにカーソルを合わせ、セル右下の小さな四角にマウスカーソルを合わせてマウスカーソルが「+」に変わったところでドラッグ開始、二班の下までドラッグしてドロップします。これで同様に設定されます(出席簿の範囲を$でアンカーリングしないとこの時にずれていくのです)。

 プログラマは案外エクセルを使うことは少なく、必要に迫られて困った時にWeb検索して関数を見つける、ということが多いと思います。しかし役立つ関数がまとまった小さな本を電車などで眺めておいて、いざ困る前に「それに使える関数があったはずだ」と思い出せると心強いと思います。
エクセル関数ワザ100

最後に図のように設定したエクセルをテキストにしたものを載せておきます。
当然ですがココにある名前はダミーデータです。本人が居ても気にしないでくださいw
これをエクセルのA1のセルに貼り付けると再現されるはずです。
出席簿 班分け
番号 名前 一班
1 和田 淳 番号 名前
2 鶴岡 薫 1 =VLOOKUP(D4, A$3:B$17, 2)
3 生瀬 まなみ 3 =VLOOKUP(D5, A$3:B$17, 2)
4 有馬 めぐみ 5 =VLOOKUP(D6, A$3:B$17, 2)
5 宮内 まみ 7 =VLOOKUP(D7, A$3:B$17, 2)
6 石山 美佐子 9 =VLOOKUP(D8, A$3:B$17, 2)
7 五十嵐 栄一
8 高柳 京子
9 岩沢 裕次郎 二班
10 菅谷 美紀 番号 名前
11 山上 莉緒 2 =VLOOKUP(D13, A$3:B$17, 2)
12 中園 佑 4 =VLOOKUP(D14, A$3:B$17, 2)
13 岩井 茂樹 6 =VLOOKUP(D15, A$3:B$17, 2)
14 米沢 美月 8 =VLOOKUP(D16, A$3:B$17, 2)
15 永田 豊 10 =VLOOKUP(D17, A$3:B$17, 2)

0 件のコメント:

コメントを投稿