VLOOKUP関数はどのように使われるか

VLOOKUP関数とは

VLOOKUPとは、スプレッドシートにおいて、ある値を別の表から検索して取得するための関数である。VLOOKUP関数は、データを縦に連続している単純な表から情報を抽出するためによく使われる。

基本的には、VLOOKUP関数は引数として以下の4つを必要とする。

VLOOKUP(検索する値, データが入った範囲, 取得する列の番号, 近似一致の場合TRUE/完全一致の場合FALSE)

VLOOKUPの基本的な使い方

例えば、以下のような表がある。この表から、IDが「002」の人の住所を取得したいとする。

ID 名前 住所
001 山田 東京都千代田区
002 鈴木 神奈川県川崎市
003 田中 大阪市中央区

IDが「002」である鈴木さんの住所を取得するには、以下のようにVLOOKUP関数を使う。

=VLOOKUP("002", A2:C4, 3, FALSE)
  • 「002」という値を検索する。
  • データがA2からC4の範囲に入っている。
  • 取得する列は3列目である(住所)。
  • 完全一致で検索する(FALSE)。

この式は、「神奈川県川崎市」という結果を返す。

検索する値をセルに入力する

VLOOKUP関数の最初の引数には、検索する値を直接入力することもできるが、セルに入力した値を利用することもできる。これによって、検索条件を変更して素早くデータを取得することができる。

例えば、以下のような表がある。この表から、IDが「B101」の商品の価格を取得したいとする。

商品ID 商品名 価格
A101 りんご 100
A102 みかん 200
B101 いちご 150
B102 バナナ 120
C101 レモン 80

この表から、IDがB101の商品の価格を取得するには、以下のようになる。

=VLOOKUP("B101", A2:C6, 3, FALSE)

しかし、この検索条件をセルに入力し、変数として使うこともできる。例えば、以下のようにセルB1に検索条件「B101」を入力する。

商品ID 商品名 価格
A101 りんご 100
A102 みかん 200
B101 いちご 150
B102 バナナ 120
C101 レモン 80
=VLOOKUP(B1, A2:C6, 3, FALSE)

この場合、セルB1の値が変更されたとき、関数を再計算するだけでデータを取得できる。この方法を利用することで、複数の検索条件を使って、同じ表から様々なデータを取得することができる。

別のシートのデータを検索する

VLOOKUP関数は、別のシートにあるデータを検索して取得することもできる。この場合、以下のように式を修正する必要がある。

=VLOOKUP(検索する値, シート名!データが入った範囲, 取得する列の番号, 近似一致の場合TRUE/完全一致の場合FALSE)

例えば、以下のような表がある。この表は、Sheet2にある。

ID 名前 住所
001 山田 東京都千代田区
002 鈴木 神奈川県川崎市
003 田中 大阪市中央区

この表から、Sheet1にある「002」という値に対応する住所を取得する場合、以下のようになる。

=VLOOKUP("002", Sheet2!A2:C4, 3, FALSE)

複数列からデータを取得する

VLOOKUP関数は、単一の列だけでなく、複数列からデータを取得することもできる。例えば、以下のような表がある場合を考える。

ID 名前 住所
001 山田 東京都千代田区
002 鈴木 神奈川県川崎市
003 田中 大阪市中央区

この表から、IDが「002」の人の住所と名前を取得するには、以下のようになる。

=VLOOKUP("002", A2:C4, {2, 3}, FALSE)
  • 「002」という値を検索する。
  • データがA2からC4の範囲に入っている。
  • 取得する列は2列目と3列目である(名前と住所)。
  • 完全一致で検索する(FALSE)。

この式は、「鈴木」と「神奈川県川崎市」という2つの結果を返す。

取得する列が変わる場合

VLOOKUP関数は、データが入っている列と同じ範囲でしか、値を取得することができない。しかし、INDEX関数やOFFSET関数を併用することで、VLOOKUP関数を柔軟に使うことができる。

例えば、以下のような表がある場合を考える。この表は、A列にID、B列に名前、C列に価格が入っている。

ID 名前 価格
101 りんご 100
102 みかん 200
103 いちご 150
104 バナナ 120
105 レモン 80

この表から、IDがB1の商品の価格を取得する場合、以下のようになる。

=VLOOKUP(B1, A2:B6, 2, FALSE)

ここで、価格の列がC列になったと仮定する。この場合、取得する列の番号を変更して「3」にすることで、価格を取得できる。

=VLOOKUP(B1, A2:C6, 3, FALSE)

しかし、VLOOKUP関数が取得する列が変わった場合、この式では価格を取得できなくなる。この場合、OFFSET関数を使って検索範囲を変更することで対応できる。

OFFSET関数は、指定した位置から、指定した行数と列数分だけずらしたセルを返す関数である。OFFSET関数を利用することで、VLOOKUP関数の第2引数を動的に変更することができる。

以下の式では、B1で指定したIDの行から開始して、C列を含む2列分の範囲を丸ごと検索する。

=VLOOKUP(B1, OFFSET(A1, MATCH(B1,A2:A6,0)-1, 0, 2, 3), 3, FALSE)
  • B1の値とA列の範囲を照合し、該当行を検索する。
  • OFFSET関数で、検索開始セルから、指定された2行3列分の範囲を返す。
  • VLOOKUP関数で、OFFSET関数から返された範囲から価格(3列目)を取得する。
  • 完全一致で検索する(FALSE)。

この式により、IDがB1に指定された商品の価格を、価格の列位置に依存しない形で取得することができる。

VLOOKUPのまとめ

VLOOKUP関数は、スプレッドシートにおいて、ある値を別の表から検索して取得するための関数である。基本構文は、以下の通りである。

VLOOKUP(検索する値, データが入った範囲, 取得する列の番号, 近似一致の場合TRUE/完全一致の場合FALSE)

また、以下の機能を使うことで、VLOOKUP関数の使い方を拡張することができる。

  • 検索する値をセルに入力する
  • 別のシートのデータを検索する
  • 複数列からデータを取得する
  • 取得する列が変わる場合

以上のような方法を使いこなすことで、スプレッドシートでのデータ分析や集計作業をスピーディーに実施することができる。