右の列を検索して左の列のデータを取り出す「逆引き」の方法として、次の3種類の方法を紹介します。
- VLOOKUP関数+作業列を使う方法
- XLOOKUP関数を使う方法(Excel 2021以降またはMicrosoft 365)
- INDEX関数+MATCH関数を使う方法
やりたいこと
ここでは、図1 の商品リストから品名を条件として品番を取り出します。
方法1…VLOOKUP関数+作業列を使う方法
まずは、表引き関数の代表格である VLOOKUP関数による方法を見ていきます。VLOOKUP関数はどのバージョンのExcelでも使用できる点と、メジャーな関数なので知っている人が多い点がメリットです(みんなが知っている関数を使うと、メンテナンスがしやすい)。VLOOKUP関数の基本的な使い方は「VLOOKUP関数 ● 表を縦方向に検索してデータを取り出す」を参照してください。
VLOOKUP関数で検索できるのは、表の 1列目に限られます。検索対象の列(ここでは品名)が戻り値の列(ここでは品番)の右側にある場合は、下準備として表の左隣に作業列を設け、図2のように検索対象のデータを表示しておきます。こうすれば、VLOOKUP関数で表の 1列目を検索できるというわけです。
VLOOKUP関数の引数[検索値]にセルB2(「消しゴム」)を指定し、[範囲]に作業列を含めた商品リストのセル範囲を指定します。品番を求めたいので[列番号]に「品番」欄の列番号の「2」を指定し、[検索の型]に完全一致検索の「FALSE」を指定すると、図3のように「消しゴム」の品番を取り出せます。
表を縦に検索してデータを取り出す
=VLOOKUP(検索値, 範囲, 列番号, [検索の型])
セルB4 | =VLOOKUP(B2,D3:G6,2,FALSE)
方法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)
方法3…INDEX関数+MATCH関数を使う方法
XLOOKUP関数が使えないバージョンで、作業列を使いたくない場合は、INDEX関数+MATCH関数で逆引きする方法があります。順を追って説明します。
MATCH関数は、[検査値]が[検査範囲]の何番目にあるかを求める関数です。まず、空いているセルに MATCH関数を入力して、「消しゴム」が「品名」欄の何番目にあるかを調べます。[検査値]に検索条件が入力されたセルB2、[検査範囲]に「品名」欄のセルF3~F6、[照合の型]に完全一致検索を行うための「0」を指定します。「消しゴム」は「品名」欄の 3番目にあるので、結果は「3」になります。
指定した範囲の中から検索値の位置を求める
=MATCH(検査値, 検査範囲, [照合の型])
セルB4 | =MATCH(B2,F3:F6,0)
INDEX関数は、[参照]のセル範囲の中から[行番号]目のセルを返す関数です。[参照]に「品番」欄のセルE3~E6 を指定し、[行番号]にMATCH関数入力したセルB4 を指定すると、「=INDEX(E3:E6,3)」が実行されて「品番」欄の「3」行目の位置にある「G101」が求められます。
指定した行と列の位置にあるセルを取り出す
=INDEX(参照, 行番号, [列番号], [領域番号])
セルB3 | =INDEX(E3:E6,B4)
メモ