Excel の MATCH 関数を使用して、セル範囲または配列内の特定の値の相対位置を見つけることができます。
MATCH関数は、どちらもExcelルックアップに分類されるため、 VLOOKUP関数に似ています。/参照関数。 VLOOKUP は列内の特定の値を検索して同じ行の値を返しますが、MATCH 関数は範囲内の特定の値を検索してその値の位置を返します。
Excel MATCH関数は、セルまたは配列の範囲内で指定された値を検索し、その範囲内でその値が最初に出現した相対位置を返します。 MATCH 関数を使用して特定の値を検索し、INDEX 関数 (Vlookup と同様) を使用して対応する値を返すこともできます。 Excel の MATCH 関数を使用して、セル範囲内のルックアップ値の位置を見つける方法を見てみましょう。
Excel の MATCH 関数
MATCH 関数は Excel の組み込み関数であり、主に列または行のルックアップ値の相対位置を特定するために使用されます。
MATCH関数の構文:
=MATCH(lookup_value、lookup_array、[match_type})
場所:
lookup_value – 指定した範囲のセルまたは配列で検索する値。数値、テキスト値、論理値、または値を持つセル参照にすることができます。
lookup_array –値を検索しているセルの配列。単一の列または単一の行である必要があります。
match_type – これはオプションのパラメータで、0、1、または-1 に設定でき、デフォルトは 1 です。
- 0 は完全一致を探し、見つからない場合はエラーを返します。
- -1 は最小値を探しますこれは、ルックアップ配列が昇順の場合、lookup_value以上です。
- 1 は、ルックアップ配列の場合、look_up値以下の最大値を検索します。降順。
完全一致の位置を見つける
特定の値の位置を見つけたい次のデータセットがあると仮定しましょう。
この表では、列(A2:A23)で都市名(メンフィス)の位置を検索するため、次の式を使用します。
=MATCH("memphis",A2:A23,0)
都市名と完全に一致するものを見つけたいため、3番目の引数は「0」に設定されています。ご覧のとおり、数式の都市名「メンフィス」は小文字ですが、表では都市名の最初の文字が大文字です(メンフィス)。それでも、数式は指定された範囲内の指定された値の位置を見つけることができます。これは、MATCH関数で大文字と小文字が区別されないためです。
注: lookup_valueがルックアップ範囲に見つからない場合、または間違ったルックアップ範囲を指定した場合、関数は#N/A エラー。
関数の最初の引数で、直接値の代わりにセル参照を使用できます。次の数式は、セルF2の値の位置を見つけ、セルF3に結果を返します。
近似一致の位置を見つける
ルックアップ値の近似または完全一致を検索してその位置を返すには、2つの方法があります。
- 1つの方法は、指定された値以上(次に大きい一致)である最小値を見つけることです。関数の最後の引数 (match_type) を「-1」に設定することで実現できます
- 別の方法は、指定された値以下(次に小さい一致)の最大値です。これは、関数のmatch_typeを「1」に設定することで実現できます
次に小さいマッチ
一致タイプが「1」に設定されているときに関数が指定された値と完全に一致するものを見つけられない場合、指定された値(次に小さい値を意味する)よりわずかに小さい最大値を見つけます。その位置を返します。これが機能するには、配列を昇順で並べ替える必要があります。そうでない場合は、エラーになります。
この例では、次の式を使用して次に小さい一致を見つけます:
=MATCH(F2、D2:D23,1)
この数式がセルF2の値と完全に一致するものを見つけられなかった場合、次に小さい値、つまり98の位置(16)を指します。
次に大きい試合
一致タイプが「-1」に設定されていて、MATCH関数が完全一致を見つけることができない場合、指定された値(つまり次に大きい値)より大きい最小値を見つけて、その位置を返します。.このメソッドでは、ルックアップ配列を降順にソートする必要があります。そうしないと、エラーが返されます。
たとえば、次の数式を入力して、ルックアップ値に次に大きい一致を見つけます。
=MATCH(F2、D2:D23、-1)
このMATCH関数は、ルックアップ範囲D2:D23でF2(55)の値を検索し、完全に一致するものが見つからない場合は、次に大きい値、つまり58の位置(16)を返します。
ワイルドカードマッチ
ワイルドカードは、match_typeが「0」に設定され、ルックアップ値がテキスト文字列である場合にのみ、MATCH関数で使用できます。 MATCH 関数で使用できるワイルドカードには、アスタリスク (*) と疑問符 (?) があります。
- 疑問符(?)は、任意の1文字または文字をテキスト文字列と一致させるために使用されます。
- アスタリスク(*)任意の数の文字を文字列と一致させるために使用されます。
たとえば、MATCH関数のlookup_value(Lo ?? n)で2つの「?」ワイルドカードを使用して、テキスト文字列と任意の2文字(ワイルドカードの場所)に一致する値を検索しました。また、この関数は、セルE5内の一致する値の相対位置を返します。
=MATCH("Lo ?? n"、A2:A22,0)
ワイルドカード (*) は (?) と同じように使用できますが、アスタリスクは任意の数の文字と一致するために使用され、疑問符は任意の 1 つの文字と一致するために使用されます。
たとえば、「sp *」を使用すると、関数はスピーカー、速度、スピルバーグなどと一致する可能性があります。ただし、関数がルックアップ値と一致する複数/重複する値を検出した場合、関数はの位置のみを返します。最初の値。
この例では、lookup_value引数に「Kil * o」と入力しました。したがって、MATCH() 関数は、最初に「Kil」、最後に「o」、およびその間に任意の数の文字を含むテキストを検索します。 「Kil * o」は配列内のキリマンジャロと一致するため、関数はキリマンジャロの相対位置である16を返します。
インデックスとマッチ
MATCH関数が単独で使用されることはめったにありません。強力な数式を作成するために、他の関数と組み合わせることがよくあります。 MATCH関数をINDEX関数と組み合わせると、高度なルックアップを実行できます。 VLOOKUP の方が簡単ですが、INDEX MATCH の方が VLOOKUP よりも柔軟で高速なので、多くの人が値の検索に VLOOKUP を使用することを好みます。
VLOOKUPは値を垂直方向、つまり列のみをルックアップできますが、INDEXMATCHコンボは垂直方向と水平方向の両方のルックアップを実行できます。
テーブルまたは範囲内の特定の場所で値を取得するために使用されるINDEX関数。 MATCH関数は、列または行の値の相対位置を返します。組み合わせると、MATCH は特定の値の行番号または列番号 (場所) を見つけ、INDEX 関数はその行番号と列番号に基づいて値を取得します。
INDEX関数の構文:
=INDEX(array、row_num、[col_num]、)
とにかく、INDEXMATCHがどのように機能するかを例で見てみましょう。
以下の例では、学生「Anne」の「Quiz2」スコアを取得します。これを行うには、以下の式を使用します。
=INDEX(B2:F20、MATCH(H2、A2:A20,0)、3)
INDEXは、値を取得するために行番号と列番号を必要とします。上記の式では、ネストされたMATCH関数は、値「Anne」(H2)の行番号(位置)を検索します。次に、その行番号を、範囲 B2:F20 と列番号 (3) で INDEX 関数に指定します。そして、INDEX関数はスコア「91」を返します。
INDEX と MATCH による双方向検索
INDEX関数とMATCH関数を使用して、2次元範囲の値をルックアップすることもできます(双方向ルックアップ)。上記の例では、MATCH関数を使用して値の行番号を見つけましたが、列番号を手動で入力しました。しかし、2 つの MATCH 関数をネストすることで、行と列の両方を見つけることができます.
この式を使用して、INDEXとMATCHを使用した双方向ルックアップを行います。
<コード>=INDEX(A1:F20,MATCH(H2,A2:A20,0),MATCH(H3,A1:F1,0))
ご存じのとおり、MATCH 関数は水平方向と垂直方向の両方で値を検索できます。この式では、colum_num引数の2番目のMATCH関数が、Quiz2(4)の位置を見つけて、それをINDEX関数に提供します。そして、INDEXはスコアを取得します。
これで、Excel で Match 関数を使用する方法がわかりました。