- 公開日:
- 更新日:
エクセルで複数条件に一致したデータを抽出する方法
この記事では、エクセルで複数条件に一致したデータを抽出する方法をご紹介します。
データ抽出で複数条件を設定できるようになると、商品リストや顧客表などの膨大なデータから任意のデータを抽出できるようになります。
今回は指定された行と列が交差するセル番地の値を返すINDEX関数と、指定した範囲内で検索したい値や文字列がどの位置にあるかを返すMATCH関数を組み合わせる方法をご紹介します。
以下では、複数条件で抽出する他の関数等についてもご紹介しています。
エクセルで複数条件に一致したデータを抽出する方法
INDEX関数とMATCH関数を組み合わせて複数条件を設定し、条件に一致したデータを抽出する方法をご説明します。今回は条件として「工場名」と「商品名」を入力して、対応する「単価」を表示する方法を例に挙げます。

今回は上の画像のような表を準備し、F1セルとH1セルに入力した「工場名」「商品名」に対応する単価をF3セルに表示します。まずは、INDEX関数を入力します。INDEX関数の書式は「=INDEX(配列,行番号,[列番号])」です。【F3セル】を選択し『=INDEX(』と入力します。

次に、配列の引数として表全体を設定します。「=INDEX(」に続いて『A2:C11,』と入力します。

次に、MATCH関数を入力します。MACTH関数の書式は「=MATCH(検査値,検査範囲,[照合の種類])」です。「A2:C11,」に続いて『MATCH(』と入力します。

MATCH関数の検査値の引数を設定します。今回はF1セルとH1セルに条件を入力するので、2つのセル番地を「&」で繋ぎます。「MATCH(」に続いて『F1&H1,』と入力します。

MATCH関数の検査範囲の引数を設定します。「工場名」と「商品名」を同時に検索するので、それぞれのセル範囲を「&」で繋ぎます。「F1&H1,」に続いて『A2:A11&B2:B11,』と入力します。

次に、MATCH関数の照合の種類の引数を設定します。今回は完全一致でデータを検索したいので「A2:A11&B2:B11,」に続いて『0),』と入力します。

次に、列番号の引数を設定します。抽出したい「単価」のデータは表の左から3列目にあるため「0),」に続いて『3)』と入力し、【Ctrl】+【Shift】+【Enter】キーを押します。

「B工場」の「デスクトップパソコン」の単価である「¥190,000」が抽出されました。これで、INDEX関数とMATCH関数を使って複数条件に当てはまるデータを抽出することが出来ました。
複数条件で抽出する関数
複数条件でデータの抽出が可能な関数をご紹介します。
VLOOKUP関数
VLOOKUP関数は本来1つの条件しか設定できませんが、複数の条件を繋げて1つの条件にすることでデータの抽出が可能になります。
以下の記事では、VLOOKUP関数の用途や引数の詳細、エラーが起きた時の対処法などについてご紹介しています。
ExcelのVLOOKUP関数の使い方|指定の列と同じ行にある値を返す
VLOOKUP関数で複数条件を設定してデータを抽出する方法については以下の通りです。

上の画像のような表を準備します。
今回は、VLOOKUP関数を使ってG1セルとI1セルに入力した条件で左の表を検索し対応する「単価」をG3セルに表示する数式を作成します。
まずは複数の条件を1つの条件にするために、左の表の「工場名」と「商品名」をA列で繋げます。
【表の隣のセル(例:A2セル)】を選択して、『=B2&C2』と入力し、Enterを押します。

次に、オートフィルでコピーします。
【数式を入力したセル(例:A2セル)】を選択し、セル右下にある「■(フィルハンドル)」を下方向に【ドラッグ】します。

これで、左の表の「工場名」と「商品名」を全て繋げることが出来ました。
次に、右側の条件も&で繋げます。
【J1セル】を選択して、『=G1&I1』と入力し、Enterを押します。

これで、複数条件を1つの条件として設定する準備が出来ました。
次に、VLOOKUP関数を入力します。
VLOOKUP関数の書式は、「=VLOOKUP(検索値,検索範囲,列番号,[検索方法])」です。
【任意のセル(例:G3セル)】を選択し、『=VLOOKUP(』と入力します。

次に、検索値の引数を設定します。
条件を入力するのはG1セルとI1セルですが、検索は「J1」に表示された条件を使うので「=VLOOKUP(」に続いて『J1,』と入力します。

次に、範囲の引数を設定します。
範囲を設定する際には&で条件を繋げたA列もまとめて選択するようにしましょう。
「J1,」に続いて『A2:D11,』と入力します。

次に列番号の引数を設定します。
単価は左の表の4列目にあるため、「A2:D11,」に続いて『4,』と入力します。

次に、検索方法の引数を設定します。
今回は完全一致で検索したいので、「4,」に続いて『FALSE)』と入力しEnterを押します。

これで、式が完成し単価が表示されました。
試しに【G1セル】を選択して、『A工場』と入力しEnterを押してみます。

G3セルに「A工場」の「デスクトップパソコン」の単価が表示されました。
これで、VLOOKUP関数を使って複数条件を設定しデータを抽出することが出来ました。
FILTER関数
複数条件を設定してデータを抽出できる関数として「FILTER(フィルター)関数」があります。

FILTER関数は、エクセルの「フィルター機能」と同じく様々な条件でデータを絞り込める関数です。
上の画像では、「田中さんがノートパソコンを販売したデータ」をH3セルからJ4セルに表示しています。
このようにFILTER関数でも複数条件を設定したデータの抽出が可能です。
以下の記事では、FILTER関数の書式や用法、他の関数との組み合わせ方についてご紹介しています。
XLOOKUP関数
XLOOKUP関数でも複数条件を設定したデータの抽出が可能です。

XLOOKUP関数はVLOOKUP関数の仲間ですが、VLOOKUP関数が同じ行にある別の値を抽出する関数であるのに対して、XLOOKUP関数は行と列の両方でデータを検索することが出来ます。
上の画像は、E3セルとF3セルに入力した条件で左の商品リストを検索し、該当するデータの「単価」をG3セルに表示するようにXLOOKUP関数で数式を作成した例です。
XLOOKUP関数で複数条件を選択しデータを抽出する方法については、以下の記事「指定した複数条件で検索して抽出する」セクションをご参照ください。