• 公開日:

ExcelのMATCH関数で複数列に条件指定する方法

この記事では、ExcelのMATCH関数で複数列に条件指定する方法をご紹介します。

MATCH関数を使って条件を指定する際、複数条件を指定したり1つの条件を複数列に適応したりする方法があります。

以下では、MATCH関数を単独で使用する場合と、ほかの関数を組み合わせて複数列に条件指定する方法をご紹介します。

MATCH関数で複数列に条件を指定するとは?

そもそもMATCH関数で複数列に条件を指定するとはなにかをご説明します。

MATCH関数は指定した数値や文字列がどの位置にあるかを列番号や行番号で返しますので、膨大なデータの中から欲しいデータがどこにあるかを見つけ出すことができます。書式は「=MATCH(検索値,検索範囲,[照合の種類])」です。

詳しい使い方や引数の説明は以下の記事を参考にしてください。

ExcelのMATCH関数の使い方|検索値の範囲内での相対的な位置を返す

今回は、引数の「検索値」を条件として複数列に条件を指定します。

A列のあとB列を検索する

上記の画像は、1つの条件を複数列に適用した例です。

条件を「検査値」のももとしてA列で検索し、A列に存在しない場合はB列を検索します。該当する値がある場合は行番号を返します。

複数条件を指定する

上記の画像は、AかつBという複数条件を指定した例です。

「条件1」をA列で検索し、「条件2」をB列で検索します。どちらの条件にも該当する場合は対応するC列の値を返します。

MATCH関数の単独使用ではできることが限られますが、ほかの関数と組み合わせることで列番号や行番号ではなくセルに入力された値を返すこともできます。

ExcelのMATCH関数で複数列に条件指定する方法

以下では、ExcelのMATCH関数で複数列に条件指定する方法を4通りご紹介します。

  • 1つの条件を複数列で検索して該当した行番号を返す方法
  • A条件かつB条件に一致する値を指定した範囲で検索して該当する値を返す方法
  • 2つ以上ある条件の値を記号でつないで該当する行番号を返す方法
  • 2つ以上ある条件の値を記号でつないで指定した範囲内の該当する値を返す方法

1つの条件を複数列で検索して該当した行番号を返す方法

以下では、指定した条件をA列とB列で検索して検索条件に当てはまった値が何行目にあるかを返す方法をご紹介します。

検索値(例:もも)をA列の範囲で検索したあと、B列の範囲で検索して値が何行目にあるのか検索結果をE2セルに表示します。

E2セルに「=IFERROR(MATCH(D2,A:A,0),MATCH(D2,B:B,0))」を入力し、Enterを押します。検査値をA列で検索して存在しない場合はB列を検索し、存在する場合は検査値が入力されている行番号を返します。数式の詳細は下記「1つの条件を複数列で検索して該当した行番号を返す数式について」セクションでご紹介しています。

検査値がB3セルに存在するので、3行目の「3」がE2セルに返されました。

A条件かつB条件に一致する値を指定した範囲で検索して該当する値を返す方法

以下では、関数を組み合わせて複数列に条件指定する方法をご紹介します。

データを用意する

上記の画像では、「条件1」と「条件2」をA列(例:組)とB列(例:名前)で検索して、どちらの条件にも合うC列(例:アレルギー)の値をG2セルに返します。

今回は、「条件1」でさくら組、「条件2」でひなとして、どちらの条件にも当てはまる「アレルギー」のたまごをG2セルに返す方法をご紹介します。

関数を入力する

G2セルに「=IFERROR(INDEX(C:C,MATCH(1,(A:A=E2)*(B:B=F2),0)),"Notfound")」を入力し、Enterを押します。

A列の値がE2セルと一致し、かつB列の値がF2セルに一致するかを判定して一致する場合は対応するC列の値を返します。

C列に値が入力されていない場合は、両方の条件に一致していても「0」を返します。

また、条件がA列とB列に存在しない値の場合は「Notfound」を返します。

IFERROR関数はエラーが出た場合に指定した文字列や値を返します。書式は「=IFERROR(値,エラーの場合の値)」です。

詳しい使い方や引数の説明は以下の記事を参考にしてください。

ExcelのIFERROR関数の使い方|エラーの場合に指定した値を返す

INDEX関数は指定した行と列が交差する位置のセルまたはセルの参照を返します。書式は「=INDEX(参照,行番号,[列番号],[領域番号])」です。

詳しい使い方や引数の説明は以下の記事を参考にしてください。

ExcelのINDEX関数の使い方|行と列が交差する位置にあるセルを返す

結果が表示された

G2セルに結果が表示されました。

条件1(例:さくら組)と一致し、かつ条件2(例:ひな)に一致するC列の値が「たまご」であることがわかりました。

2つ以上ある条件の値を記号でつないで該当する行番号を返す方法

MATCH関数はほかの関数と組み合わせて使うことが多いので単独で使用する機会は少ないですが、検索値の入力を工夫することでMATCH関数単独でもAかつBといった条件を検索値にすることができます。

詳しい方法は以下の記事「複数条件で検索する方法」セクションでご紹介しています。

ExcelのMATCH関数の使い方|検索値の範囲内での相対的な位置を返す

2つ以上ある条件の値を記号でつないで指定した範囲内の該当する値を返す方法

VLOOKUP関数は検索範囲を縦方向に検索して一致した値と同じ行にあるデータを返しますが、必ず左端の列から検索しないといけません。

しかし、INDEX関数とMATCH関数を組み合わせることで左端の列からでなくても検索することができます。

詳しい方法は以下の記事「エクセルで複数条件に一致したデータを抽出する方法」セクションでご紹介しています。

エクセルで複数条件に一致したデータを抽出する方法

1つの条件を複数列で検索して該当した行番号を返す数式について

上記「1つの条件を複数列で検索して該当した行番号を返す方法」セクションで使用した「=IFERROR(MATCH(D2,A:A,0),MATCH(D2,B:B,0))」の数式をご説明します。

1つ目のMATCH関数で、D2セルの値がA列の範囲に一致する場合はD2セルの値を返します。

2つ目のMATCH関数で、D2セルの値がB列の範囲に一致する場合はD2セルの値を返します。

IFERROR関数で、もし1つ目のMATCH関数で一致する値が見つからずエラーになる場合は2つ目のMATCH関数の結果に切り替えます。

つまり、A列で検査値であるD2セルの値が見つかない場合はB列で検索して、D2セルの値が存在するセルの行番号を返します。

A列とB列どちらにも検査値がある場合は最初のセルの行番号を返します。

A列とB列どちらにも存在しない場合は「#N/A」を返します。