逆引きで表引き(VLOOKUP、XLOOKUP、INDEX+MATCH)

右の列を検索して左の列のデータを取り出す「逆引き」の方法として、次の3種類の方法を紹介します。

  • VLOOKUP関数+作業列を使う方法
  • XLOOKUP関数を使う方法(Excel 2021以降またはMicrosoft 365)
  • INDEX関数+MATCH関数を使う方法
スポンサーリンク

やりたいこと

ここでは、図1 の商品リストから品名を条件として品番を取り出します。

図1 セルB2に入力した品名を商品リストから探し、品番を求めたい。

方法1…VLOOKUP関数+作業列を使う方法

まずは、表引き関数の代表格である VLOOKUP関数による方法を見ていきます。VLOOKUP関数はどのバージョンのExcelでも使用できる点と、メジャーな関数なので知っている人が多い点がメリットです(みんなが知っている関数を使うと、メンテナンスがしやすい)。VLOOKUP関数の基本的な使い方は「VLOOKUP関数 ● 表を縦方向に検索してデータを取り出す」を参照してください。

VLOOKUP関数で検索できるのは、表の 1列目に限られます。検索対象の列(ここでは品名)が戻り値の列(ここでは品番)の右側にある場合は、下準備として表の左隣に作業列を設け、図2のように検索対象のデータを表示しておきます。こうすれば、VLOOKUP関数で表の 1列目を検索できるというわけです。

図2 商品リストの左隣の列のセルD3に「=F3」と入力して、品名を表示する。この数式をセルD6までコピーする。

VLOOKUP関数の引数[検索値]にセルB2(「消しゴム」)を指定し、[範囲]に作業列を含めた商品リストのセル範囲を指定します。品番を求めたいので[列番号]に「品番」欄の列番号の「2」を指定し、[検索の型]に完全一致検索の「FALSE」を指定すると、図3のように「消しゴム」の品番を取り出せます。

表を縦に検索してデータを取り出す
=VLOOKUP(検索値, 範囲, 列番号, [検索の型])

セルB4 | =VLOOKUP(B2,D3:G6,2,FALSE)

図3 セルB3に VLOOKUP関数を入力すると、「消しゴム」の品番が求められる。

方法2…XLOOKUP関数を使う方法

XLOOKUP関数なら検索対象の列は表の 1列目になくてもよいので、作業列なしに逆引きを行えます。ただし、XLOOKUP関数は Excel 2021より前のバージョンでは使用できないので注意してください。XLOOKUP関数の基本的な使い方は「XLOOKUP関数 ● さまざまな条件を指定してデータを取り出す (1)完全一致検索の場合」を参照してください。

XLOOKUP関数の引数[検索値]に検索条件が入力されたセルB2、[検索範囲]に「品名」欄のセルF3~F6、[戻り値範囲]に「品番」欄のセルE3~E6 を指定します。「消しゴム」は[検索範囲]の 3番目の位置で見つかるので、[戻り値範囲]の 3番目の位置から「G101」が取り出されます。

さまざまな条件を指定してデータを取り出す
=XLOOKUP(検索値, 検索範囲, 戻り値範囲, [見つからない場合],[一致モード], [検索モード])

セルB3 | =XLOOKUP(B2,F3:F6,E3:E6)

図4 セルB3に XLOOKUP関数を入力すると、「消しゴム」の品番が求められる。

方法3…INDEX関数+MATCH関数を使う方法

XLOOKUP関数が使えないバージョンで、作業列を使いたくない場合は、INDEX関数+MATCH関数で逆引きする方法があります。順を追って説明します。

MATCH関数は、[検査値]が[検査範囲]の何番目にあるかを求める関数です。まず、空いているセルに MATCH関数を入力して、「消しゴム」が「品名」欄の何番目にあるかを調べます。[検査値]に検索条件が入力されたセルB2、[検査範囲]に「品名」欄のセルF3~F6、[照合の型]に完全一致検索を行うための「0」を指定します。「消しゴム」は「品名」欄の 3番目にあるので、結果は「3」になります。

指定した範囲の中から検索値の位置を求める
=MATCH(検査値, 検査範囲, [照合の型])

セルB4 | =MATCH(B2,F3:F6,0)

図5 セルB4 にMATCH関数を入力する。「消しゴム」は「品番」欄の 3番目にあるので「3」が表示される。

INDEX関数は、[参照]のセル範囲の中から[行番号]目のセルを返す関数です。[参照]に「品番」欄のセルE3~E6 を指定し、[行番号]にMATCH関数入力したセルB4 を指定すると、「=INDEX(E3:E6,3)」が実行されて「品番」欄の「3」行目の位置にある「G101」が求められます。

指定した行と列の位置にあるセルを取り出す
=INDEX(参照, 行番号, [列番号, [領域番号)

セルB3 | =INDEX(E3:E6,B4)

図6 セルB3に INDEX関数を入力すると、「消しゴム」の品番が求められる。

メモ

品番を 1つの数式で求めるには
上の手順では MATCH関数を INDEX関数とは別のセルに入力しましたが、入れ子にすれば 1つの数式で品番を求められます。
=INDEX(E3:E6,MATCH(B2,F3:F6,0))
スポンサーリンク

関連記事