今さら聞けないExcel・VLOOKUP関数の基本と便利な使い方



今さら聞けないExcel・VLOOKUP関数の基本と便利な使い方

Excelでの業務に必須といえばVLOOKUP関数。これを覚えているかどうかで、業務スピードや正確性に格段に差が出ます。便利な使い方のアイデアが広がる関数の一つですが、複雑になればメンテナンスが難しくなる関数でもあります。今さら使い方なんて聞けないという方に、VLOOKUP関数の基本と便利な使い方のヒント、エラーへの対処方法をご紹介します。

※画像はOS:Windows 10, Excelのバージョン:Excel 2016のものです

目次
  1. VLOOKUP関数の基本
  2. 書式
  3. 基本的な使い方
  4. ワイルドカードについて
  5. 便利な使い方
  6. 別のシートから値を選ぶ
  7. 名前の定義とINDIRECT関数を使って表を切り替える
  8. エラー処理
  9. エラーが起こる場合の対処方法
  10. N/A と表示される
  11. セルに #REF! と表示される
  12. セルに #NAME? と表示される
  13. 戻された値が正しくない その1
  14. 戻された値が正しくない その2
  15. 戻された値が正しくない その3
  16. 戻された値が正しくない その4
  17. おわりに

image

VLOOKUP関数の基本

書式

VLOOKUP(検索値, 範囲, 列番号, [検索の型])

検索値:検索の対象となる値 範囲:検索値、戻り値を検索するセル範囲。検索値が検索する列は、左端の列です。 列番号:戻り値の列番号。セル範囲の左端の列が1 検索の型(省略可):近似値を含めて検索するか、検索値と完全一致するかを指定。省略した場合はTRUEになります。 TRUE(1):検索値に最も近い値を含める FALSE(0):完全一致する

基本的な使い方

例としてセルA1からD7に従業員表を作成しました。G2にVLOOKUP関数を入力しています。

kihon

セルG2:=VLOOKUP($F$2,A:D,2) 検索値はセルF2、セル範囲はA列からD列です。セルF2に入力した検索値で、セル範囲の左端であるA列を検索します。戻り値の列番号は2,すなわちB列になります。この例の場合、「F2に入力された104でA列(ID)を検索、A列が104である行と同じ行のB列(氏名)を返す」という意味になり、結果B5の値を返しています。

ワイルドカードについて

検索の型がFALSEで検索値が文字列の場合、ワイルドカードを使用できます。ワイルドカードとは、任意の文字を意味する特殊文字のこと。Excelの場合は下記2つが使えます。

  • 疑問符 (?):任意の1文字
  • アスタリスク ():1文字以上の任意の文字列
ちなみに疑問符やアスタリスク自体を検索する場合は、"~" のように、文字の前に半角のチルダ (~) を付けます。

便利な使い方

別のシートから値を選ぶ

検索値とセル範囲は離れて位置していても、別のシートを指定してもOK。他のシートにある表からデータを取得する方法は、幅広く活用できます。

例としてシートscheduleを追加し、「鍵当番」表を作成しました。

fukusu1

元のシートのセルG2に、シートscheduleのデータを取得する式を入力します。

fukusu

セルG2:=VLOOKUP($F$2,schedule!A:B,2,1)

セルF2の値(日付)で、シートscheduleのA列~B列を検索し、セルG2に結果「102」(シートscheduleのセルB5)を戻しています。他のシートを参照するときは「シート名!セル範囲」の形で指定します。

名前の定義とINDIRECT関数を使って表を切り替える

Excelでは指定した範囲に「名前」を付ける機能があります。名前の参照範囲を返すINDIRECT関数を用いて、「名前を指定して参照したい範囲を変更する」という処理ができます。

・INDIRECT関数

INDIRECT(参照文字列, [参照形式]) 指定される文字列の参照を返します。 参照文字列:名前または文字列としてのセルへの参照を指定します。 参照形式:TRUE…A1形式、FALSE…R1C1 形式

例として、シートscheduleに「鍵当番」(セル範囲:A2~B9)「戸締り責任者」(セル範囲:D2~E9)の2つの表を作成しました。

indirect1

範囲に名前を付けます。A2~B9の範囲を選び、右クリックでメニューを表示、「名前の定義」を選択します。

indirect2 範囲の名前を付けます。ここでは「鍵当番」と付けました。同様にもう一つのD2~E9を「戸締り責任者」と設定します。

indirect3

元のシートのセルH2、H3に、指定した範囲でデータを取得する式を入力します。

indirect4

セルH2:=VLOOKUP($F$2,INDIRECT(G2),2)

セルH3:=VLOOKUP($F$2,INDIRECT(G3),2)

セルG2には範囲の名前「鍵当番」を入力しています。INDIRECT(G2)は、名前の定義時に設定した参照範囲 schedule!$A$2:$B$9 を返します。従って、F2に入力された日付を元に、G2に入力した名前の範囲でデータを取得するという処理になります。

セルH3も同様にセルG3に入力された「戸締り責任者」の範囲で検索値を検索しています。

indirect5

エラー処理

値が見つからないときやその他エラーが起こる場合は、空白を表示するよう処理を加えるとスマートに見えます。エラー処理にはIFERROR関数を使います。

・IFERROR関数

IFERROR(値, エラーの場合の値) 数式の結果(「値」)がエラーの場合は「エラーの場合の値」を返し、それ以外の場合は数式の結果を返します。

iferror セルH3:=IFERROR(VLOOKUP($F$2,INDIRECT(G2),2,0),"")

シートscheduleに2016/6/10のデータはないので、セルH3はN/Aエラーとなります。空白が表示されました。

エラーが起こる場合の対処方法

関数に慣れるまではエラーは頻繁に起こります。エラーが起きた場合のヒントを記載します。

N/A と表示される

値が見つからなかった場合に表示されます。検索の型によりエラーの意味が若干異なります。

「検索の型」がTRUEの場合 検索値の値が、範囲の左端列にある最小値よりも小さい。 (ちなみに検索値の値が範囲の左端列にある最大値よりも大きい場合は、最大値が返されます)

「検索の型」がFALSEの場合 完全に一致する値が見つからない

セルに #REF! と表示される

列番号が範囲の列の数を超えている場合。例えば、A列とB列を選択しているのに列番号を3とすると、このエラーとなります。

セルに #NAME? と表示される

引数に、必要な引用符(")がありません。たとえば全角文字にもかかわらず引用符がない場合です。

戻された値が正しくない その1

検索の型がTRUEで、セル範囲の左端列が整列していない場合、想定と異なる値が返される可能性があります。 ・左端列を基準に表全体を整列するか ・検索の型をFALSEにする を試してみてください。

戻された値が正しくない その2

検索値が数値や日付型で、かつセル範囲の左端列が文字列となっている場合、想定と異なる値が返される可能性があります。 数値や日付を文字列として保存しないようにしましょう。

戻された値が正しくない その3

セルの結合がされていると、正しい値を返しません。今一度チェックしましょう。

戻された値が正しくない その4

想定と異なるも近い値が返ってきた場合、検索の型の指定が不適切なのかもしれません。検索の型がTRUEまたは省略する場合において、検索値が範囲の左端列にある最小値以上の場合、近似値が返されます。完全に一致する値を返したい場合はFALSEに設定してください。

おわりに

VLOOKUP関数は使いこなすまで少々時間がかかるかもしれません。しかしデータ分析や工数見積もり、各種書類作成など、かなり利用頻度が高く、あらゆる分野に応用が効き便利な関数です。業務効率化に、ぜひ覚えてお役立てくださいね。

image

関連記事

murase miho
この記事を書いた人
murase miho
\ 無料体験開催中!/自分のペースで確実に習得!
オンライン・プログラミングレッスンNo.1のCodeCamp