ヒント
あらゆる方向で動作し、既定で完全一致を返す改善されたバージョンの MATCH である新しい XMATCH 関数を使用してみます。この関数は、前のバージョンよりも使いやすく便利です。
MATCH 関数は、セルの範囲内で指定した項目を検索し、その範囲内の項目の相対的な位置を返します。 たとえば、範囲 A1:A3 に値 5、25、38 が含まれている場合、数式「=MATCH(25,A1:A3,0)」を入力すると、範囲内では 25 が 2 番目の項目であるため、数字 2 が返されます。
ヒント
検索する項目自体ではなく、その項目の位置を調べる場合は、LOOKUP 関数の代わりに MATCH 関数を使用します。 たとえば、MATCH 関数を使用して、INDEX 関数のrow_num引数の値を指定できます。
書式
MATCH(検査値, 検査範囲, [照合の型])
MATCH 関数の書式には、次の引数があります。
lookup_value 必須。 lookup_arrayで一致させる値。 たとえば、電話番号帳を使ってある人の電話番号を調べるとき、検査値としてその人の氏名を指定しますが、実際に検索するのは電話番号です。
検査値には、値 (数値、文字列、または論理値)、またはこれらの値に対するセル参照を指定できます。
lookup_array 必須。 検索するセルの範囲を指定します。
match_type オプション。 -1、0、1 の数値のいずれかを指定します。 match_type引数は、Excel がlookup_array内の値とlookup_valueを一致する方法を指定します。 この引数の既定値は 1 です。
次の表は、照合の型に基づいて関数が値を検索する方法を示しています。
| 照合の型 | 動作 |
|---|---|
| 1 または省略 | MATCH は、 lookup_value以下の最大値を検索します。 lookup_array引数の値は、...-2、-1、0、1、2、...、A-Z、FALSE、TRUE などの昇順に配置する必要があります。 |
| 0 | MATCH は、 lookup_valueとまったく等しい最初の値を検索します。 lookup_array引数の値は任意の順序で指定できます。 |
| -1 | MATCH は、lookup_value以上の最小値を検索します。 lookup_array引数の値は、TRUE、FALSE、Z-A、..などの降順で配置する必要があります。2、1、0、-1、-2、..など。 |
- MATCH は、値自体ではなく、 lookup_array内の一致する値の位置を返します。 たとえば、 MATCH("b",{"a","b","c"},0) は 2 を返します。これは配列 {"a","b","c"} 内の "b" の相対位置です。
- MATCH 関数では、英字の大文字と小文字は区別されません。
- MATCH 関数で検査値が見つからない場合は、#N/A エラー値が返されます。
- match_typeが 0 で、lookup_valueがテキスト文字列である場合は、lookup_value引数でワイルドカード文字 (疑問符 (?) とアスタリスク (*) を使用できます。 ワイルドカード文字の疑問符は任意の 1 文字を表し、アスタリスクは 1 文字以上の任意の文字列を表します。 実際の疑問符またはアスタリスクを検索する場合は、文字の前にチルダ (~) を入力します。
使用例
次の表のサンプル データをコピーし、新しい Excel ワークシートのセル A1 に貼り付けます。 数式を選択して、F2 キーを押し、さらに Enter キーを押すと、結果が表示されます。 必要に応じて、列幅を調整してすべてのデータを表示してください。
| 製品 | 回数 | |
|---|---|---|
| バナナ | 25 | |
| オレンジ | 38 | |
| リンゴ | 40 | |
| ナシ | 41 | |
| 数式 | 説明 | 結果 |
| =MATCH(39,B2:B5,1) | B2:B5 のセル範囲から 39 を検索しますが、一致する値がないため、この値以下の最大の値 38 の位置が返されます。 | 2 |
| =MATCH(41,B2:B5,0) | B2:B5 のセル範囲から 41 の位置を調べます。 | 4 |
| =MATCH(40,B2:B5,-1) | B2:B5 のセル範囲は降順に並べ替えられていないため、エラーが返されます。 | #N/A |