サイトについて      連絡先   検索

エクセル VLOOKUP 関数:検索する値に対応した値を指定の列から取得する

はじめに

エクセルの VLOOKUP 関数の使い方を紹介します。

VLOOKUP 関数は検索する値に対応した値を指定の列から取得します。

B 列に対応する値を C 列や D 列から取得したいときに使用します。複数条件の指定やエラーを回避する方法も紹介します。

先に「VLOOKUP 関数の使い方をわかりやすく解説」を読むと理解しやすくなると思います。
  • 目次
    • 構文
    • 使用例
    • 解説

構文

VLOOKUP(検索値, 範囲, 列番号)
検索値範囲の 1 列目のデータと比較し、一番近い行の列番号の値を取得します。

VLOOKUP(検索値, 範囲, 列番号, 検索の型)
検索の型検索値と一致するデータを取得するように指定できます。

引数「検索値」検索する値を、数値、文字列、セル参照、関数などで指定します。
引数「検索の型」が FALSE のときだけ、ワイルドカードを使用できます。
引数「範囲」検索対象となるデータと取得するデータが含まれたセルの範囲を指定します。この範囲の一番左の列を検索します。
引数「検索の型」に TRUE を指定するときは、一番左の列が昇順に並んでいる必要があります。
引数「列番号」取得する列番号を指定します。引数「範囲」の一番左の列が「1」です。左から 2 番目の列は「2」になります。
引数「検索の型」省略できます。
TRUE または省略: 検索する値に一番近い小さい値を取得します。
FALSE: 検索する値に完全一致する値を取得します。

使用例

「VLOOKUP 関数」がどのような動作をするかを簡単に説明すると次のようになります。

1. 何を:引数「検索値」に指定した値を検索します。

2. どの行から:引数「範囲」の 1 列目のデータと一致するか検索します。

3. どの列を:「2.」で一致した行の引数「列番号」の値を取得します。

=VLOOKUP(B7,B2:D4,C7,FALSE)
15

引数「検索値」を変えたときにどの行の値を取得するか確認する。

=VLOOKUP(B7,$B$2:$D$4,2,FALSE)
16

引数「列番号」を変えたときにどの列の値を取得するか確認する。

=VLOOKUP("エクセル",$B$2:$D$4,B7,FALSE)
17

引数「検索の型」の違いを確認する。

=VLOOKUP(B8,$B$2:$B$5,1,C8)
18

複数条件で検索する

「エクセル2016」の価格を取得したいように、名前とバージョンを条件にして取得したいデータがあります。

10

まずは検索専用列を作成します。条件となる名前とバージョンを結合した値にします。

=C3&D3
11

引数「検索値」にも名前とバージョンを結合した値を指定します。これを検索専用列から検索すれば、複数条件に対応できます。

=VLOOKUP(B9&C9,$B$3:$E$6,4,FALSE)
12

解説

「VLOOKUP 関数」の使い方がまだわからないときは「VLOOKUP 関数の使い方をわかりやすく解説」をご覧ください。

引数「検索の型」に通常は FALSE を指定します。

引数「検索の型」に FALSE を指定したときに大文字と小文字は区別されません。"ABC""abc"は同じものとして一致します。

引数「検索の型」が FALSE のときだけ、引数「検索値」にワイルドカードを使用できます。使用できるワイルドカードには次のものがあります。

パターン 説明 使用例 一致例
*任意の長さの文字"あ*"あ, あい, あいう
?任意の 1 文字"あ?"あい, あか, あき
~ワイルドカードの文字 * ? を検索する"あ~?~*"あ?*
=VLOOKUP(B7,$B$2:$B$4,1,FALSE)
13

引数「検索の型」が TRUE のとき、引数「範囲」の一番左の列が昇順に並べ替えられている必要があります。そうでないときは正しい結果を取得できません。

例えば、引数「検索値」に 2 を指定したとき、次の画像では1, 10, 2, 20の順で検索します。検索値より大きい値が見つかったときは、それ以降の値は検索しません。昇順のときにそれ以降に一致する値はないからです。10 と比較したとき 2 より大きいのでこれ以降の値は検索されません。結果を 10 の 1 つ前の行から取得します。

=HLOOKUP(B5,$B$2:$E$2,1,TRUE)
19

引数「検索値」が存在しないときはエラー#N/Aになります。

左端以外の列を検索する

左端以外の列を検索するには「VLOOKUP 関数より高度に検索する」をご覧ください。

エラーを回避する

引数「検索値」が空や一致するデータが存在しないときはエラーになります。エラーを表示したくないなら「IFERROR 関数」と組み合わせて回避できます。

=IFERROR(VLOOKUP(B5,$B$2:$C$2,2,FALSE),"")
20

オートフィルを使ってコピーする

「VLOOKUP 関数」をコピーしたときに引数「列番号」を対応させて移動したいときは「COLUMN 関数」を使用します。

=VLOOKUP(C3,$B$2:$D$2,COLUMN(C3)-2,FALSE)
21

「COLUMN 関数」は引数に指定したセルの列番号を取得します。COLUMN(C3)と入力すると 3 が取得されます。これをコピーして右の列に貼り付ければCOLUMN(D3)COLUMN(E3)になるので 4, 5 といった値を取得できます。後は取得したい列番号に合わせるために -2 のような調整をします。

引数「列番号」を検索した位置にするには「MATCH 関数」を使用します。

範囲を動的に切り替える

引数「範囲」を動的に切り替えたいときは、「INDIRECT 関数」を使用します。リストから選択した値によって範囲を切り替えられます。

  • 目次
    • 構文
    • 使用例
    • 解説