【Excel講師の仕事術】自己流のエクセル、卒業しませんか? この連載では、エクセルを操作するときの「ルール」を決めることで、ミスを減らして業務を効率化していく仕事術を解説します。
VLOOKUP関数はExcelの運転免許
しっかり理解できれば仕事の幅が必ず広がる
共通のデータで異なる表を紐付ける最重要関数
VLOOKUP(ブイ・ルックアップ)関数は、覚えるまでが大変です。しかし、業務でExcelを使うなら、知らないでは済まされません。VLOOKUP関数を知らずにExcelで仕事をすることは、免許を持たずにクルマを運転するようなものだと、筆者は考えます。
VLOOKUP関数を知らない人は、Excelを使った業務のことをそもそも理解していないので、とんでもない操作をしてしまいがちです。たとえ善意の操作であっても、それが原因で壊滅的なワークシートができあがることもあります。ここは心を鬼にして「知らなければ話にならない!」というルールを設けたいと思います。
VLOOKUP関数の構文は、このようになります。
=VLOOKUP(検索値,範囲,列番号,検索条件)
すでに知っている人も、復習するつもりで一読してください。この関数を理解できると、本当に視野が広がりますよ。
ちなみに、Microsoft 365(旧称:Office 365)では、VLOOKUP関数の後継版といわれるXLOOKUP(エックス・ルックアップ)関数も使えます。今後はこちらが主流になりますが、まだ知名度が低いので、ベースとなるVLOOKUP関数は理解しておくべきです。
では、VLOOKUP関数の具体例を見ていきます。以下の表は、あるイベントの入場記録を出力したCSVファイルです。
受付で読み取った参加者コードと入場時間が、一覧になって出力されています。このD列に氏名欄を作り、B列の参加者コードから該当する氏名を取り出したいと思います。
イベントの入場記録の例
参加者リストは別のワークシートにあり、以下の右図のようになっています。氏名を取り出す鍵となるのは、入場記録と参加者リストの両方にある[Code]列のデータです。これで2つの表を紐付けて、参加者コードに一致する氏名を取り出すわけです。
例えば、参加者コード「N0005」に一致するのは「小杉利恵」さんだと分かります。これを目視や手入力ではなく、自動的に検索・抽出できるのがVLOOKUP関数です。
入場記録と参加者リストの関係
入場記録の氏名欄の最初の行(セルD2)に入力するVLOOKUP関数の数式は、以下のようになります。4つの引数のうち、「検索値」「範囲」「列番号」がどのセル範囲を指定しているかも、あわせて確認してください。
=VLOOKUP(B2,参加者リスト!A:E,2,FALSE)
VLOOKUP関数の引数のセル範囲
そして、このVLOOKUP関数の数式を読み解くと、以下のように表現できます。
- 検索値「N0005」を
- 参加者リストの表を上から探して
- 一致するデータが見つかったら
- 左から2列目にあるデータを取り出す
結果、「N0005」からは「小杉利恵」さんが取り出されました。
第1引数から第3引数までは自然に理解できるのですが、第4引数の「検索条件」が少々厄介です。これは「近似値検索を行うかどうか」のサインで、TRUE(または1)とFALSE(または0)のいずれかの値で指定するのですが、本記事での用途において、TRUEを覚える必要はありません。FALSEだけに集中してください。
FALSEは近似値検索を行わない、つまり「完全一致するデータのみを探す」という意味になり、先ほどの「3. 一致するデータが見つかったら」に該当します。
最後に、VLOOKUP関数の数式をオートフィルでコピーすれば、入場記録の氏名欄があっという間に完成します。
VLOOKUP関数をコピー
なお、ここまでは数式を直接入力する方法でしたが、VLOOKUP関数は[数式]タブの[検索/行列]ボタンからでも入力できます。シートまたはファイル間をまたいで引数を指定する場合、慣れないうちは上手くいかないこともあるので、[関数の引数]ダイアログボックスを使って入力するのもいいでしょう。
覚えておきたい3つのポイント
VLOOKUP関数を使ううえでは、次に紹介する3つのポイントに注意してください。これらを知らないと、意図しない形でデータが取り出されていることに気付かない可能性があります。
検索範囲は必ず列単位で
前節のSUMIF関数と同じく、第2引数の範囲は列単位(シートの列全体)で指定したほうが楽です。VLOOKUP関数はオートフィルをする機会が多いですが、列単位で指定すれば絶対参照にしなくても範囲がずれることがなく、数式も簡素化できます。
検索値を探すのは範囲の1列目のみ
範囲で複数の列を指定しても、検索値が検索されるのは、その範囲内のいちばん左の列だけです。先ほどの例では参加者リストの表の1列目が「Code」列だったので、意図通りの結果となりました。
以下のように1列目が「Code」列ではない場合、検索値「N0005」はいくら探しても見つからず、「#N/A」エラーとなります。
検索値は範囲の1列目を探す
重複は先にマッチしたデータだけを取り出す
VLOOKUP関数は、範囲を「上から下に向かって」検索します。もし検索値と一致するデータが複数あった場合、先にマッチしたデータしか抽出されないため、重複には注意が必要です。
以下の例では「N0005」と一致する参加者が2人いますが、上にある「伊藤夏江」さんしか取り出されません。
重複データは検索しない
採用時の面接官が、Excelスキルを確認するときに使う常套句に「VLOOKUP関数を使えますか?」があります。これには「当社のデータはたくさんあってバラバラですけど、あなたはきちんとまとめられますか?」という意味が込められているに違いありません。
特にシステムから出力したデータを扱う現場では、VLOOKUP関数で別のデータと紐付ける機会が必ずあります。知っているのと知らないのでは雲泥の差なので、不安がある人は確実に習得することをおすすめします。
- Excelを業務で使うならVLOOKUP関数は必須
- 3つのポイントを意識して狙ったデータを取り出す
- システムから出力したデータを扱う現場で重宝する