[Excel]MATCH関数

2019年9月16日

検索/行列

MATCH関数

照合の型に従ってセル参照または配列に含まれる値を検索し、検査値と一致する要素の相対的な位置を数値で返します。

Excel for Office 365 Excel for Office 365 for Mac Excel 2016 Excel 2013 Excel 2010 Excel 2007 Excel 2016 for Mac Excel for Mac 2011 Excel Online Excel for iPad Excel for iPhone Excel for Android タブレット Excel for Android フォン Excel Mobile Excel Starter 2010

機能

MATCH 関数は、「検索値」を「検索範囲」の中から検索し、その値が存在する相対的な位置を数値で返します。「照合の型」で検索方法を指定することが出来ますが、「検索範囲」の要素がソートされていないか、又は将来的にソートされた状態を維持出来ない場合は「0」を指定します。相対的な位置は、「検索範囲」の最初の要素を1として数えます。「検索値」が「検索範囲」の中に存在しなかった場合、戻り値は「照合の型」により異なります。「照合の型」が「0」の場合は「#N/A」を返し、それ以外の場合は近似値の位置を返します。

構文

MATCH(検査値, 検査範囲, [照合の型])

引数 説明 引数の指定 既定値
検索値 検査範囲の中で照合する値を指定します。たとえば、電話番号帳を使ってある人の電話番号を調べるとき、検査値としてその人の氏名を指定しますが、実際に検索するのは電話番号です。
検査値には、値 (数値、文字列、または論理値)、またはこれらの値に対するセル参照を指定できます。
必須 (無し)
検索範囲 検索するセルの範囲を指定します。 必須 (無し)
照合の型 -1、0、1 の数値のいずれかを指定します。照合の型には、検査範囲の中で検査値を探す方法を指定します。この引数の既定値は1です。
次の表は、照合の型に基づいて関数が値を検索する方法を示しています。

照合の型 動作
1 または省略 MATCH 関数は、検査値以下の最大の値を検索します。検査範囲の引数の値は、昇順の並べ替えでは、1 ~ 9、A ~ Z、あ~ん、FALSE ~ TRUE の順に配置されます。
0 MATCH 関数は、検査値と等しい最初の値を検索します。検査範囲の引数の値は、任意の順序で指定できます。
-1 MATCH 関数は、検査値以上の最小の値を検索します。検査範囲の引数の値は、降順の並べ替えでは、9 ~ 1、Z ~ A、ん~あ、TRUE ~ FALSE の順に配置されます。
省略可能 1

解説

MATCH関数は、他の検索/行列関数とは異なり、値から領域(連続するセル範囲)中の値の位置を取得できる唯一の関数です。この関数を単独で使用する機会は殆ど無く、他の関数と組み合わせることで、非常に強力な関数となります。なぜなら、ワークシートのデータ構造は、セルで出来た表のようなもので、硬い表現をすればセルの二次元配列だからです。表(二次元配列)は、行番号と列番号を指定することで、セル(及びセルに格納されている値)を特定することができます。行番号又は行番号の指定にMATCH関数を用いることで、データの取得を自動化することができます。この具体的な方法については別途解説します。

MATCH 関数は、検索の際に英字の大文字と小文字を区別しません。
「照合の型」 が 「0」 で、「検索値」が文字列の場合は、 検査値の引数で、疑問符(?) やアスタリスク (*) をワイルドカード文字として使用できます。ワイルドカード文字の疑問符は任意の 1 文字を表し、アスタリスクは 1 文字以上の任意の文字列を表します。ワイルドカード文字ではなく、通常の文字として疑問符やアスタリスクを検索する場合は、その文字の前に半角のチルダ (~) を付けます。

下記に、MATCH関数の挙動を示します。

A B
1 社員番号 名前
2 1001 鈴木 翔太
3 1002 佐藤 明日香
4 1004 高橋 翔
5 1005 田中 美咲
6 1006 佐藤 楓
数式 戻り値 説明
=MATCH( 1001 , A2:A6 , 0 ) 1 領域A2:A5の中から「1001」が存在する位置を返します。先頭セル「A2」からの相対位置であるため、「1」が返ります。
=MATCH( 1005 , A2:A6 , 0 ) 4 領域A2:A5の中から「1005」が存在する位置を返します。先頭セル「A2」からの相対位置であるため、「4」が返ります。
=MATCH( 1001 , A:A , 0 ) 2 領域A:Aの中から「1001」が存在する位置を返します。先頭セル「A1」からの相対位置であるため、「2」が返ります。「検索範囲」に列全体を指定すると、戻り値はワークシートの行番号とみなすことができます。
=MATCH( 1005 , A:A , 0 ) 5 領域A:Aの中から「1005」が存在する位置を返します。先頭セル「A1」からの相対位置であるため、「5」が返ります。「検索範囲」に列全体を指定すると、戻り値はワークシートの行番号とみなすことができます。
=MATCH( 1003 , A2:A6 , 0 ) #N/A 領域A2:A5の中から「1003」を検索しますが、存在しないため見付かりません。「照合の型」が「0」なので「#N/A」を返します。
=MATCH( 1001 , A2:A6 , 1 ) 1 「照合の型」が「1」であり、かつ「検索値」が「検索範囲」内の存在する場合、戻り値は「照合の型」に「0」を指定した場合と同一になります。
=MATCH( 1002, A2:A6 , 1 ) 2 同上
=MATCH( 1003 , A2:A6 , 1 ) 2 領域A2:A5の中から「1003」を検索しますが、存在しないため見付かりません。「照合の型」が「1」であり、かつ領域「B2:A5」の値が昇順で並んでいるため、直近の値「1002」の位置番号「2」を返します。
=MATCH( “田中 美咲" , B2:B6 , 0 ) 4 「検索値」は文字列でも使用可能です。
=MATCH( “田中*" , B2:B6 , 0 ) 4 「検査値」が文字列であり、かつ「照合の型」が「0」の場合、ワイルドカード「*」(任意の1文字以上の文字列と一致する特殊文字)が使用できます。
=MATCH( “佐藤*" , B2:B6 , 0 ) 2 ワイルドカードにより「検索範囲」内の複数の値と一致する場合は、最初に一致した値の相対位置を返します。この例では、「検索値」である「"佐藤*"」は「"佐藤 明日香"」と「"佐藤 楓"」が一致していますが、「佐藤 明日香」の方が上にあるで、その相対位置「2」を返します。
=MATCH( “佐藤??" , B2:B6 , 0 ) 5 ワイルドカード「?」(任意の1文字と一致する特殊文字)を使用することで、より柔軟な検索が可能です。この例では、「"佐藤"」という苗字は2名居ますが、苗字と空白文字を含めて4文字の人は「佐藤 楓」のみであるため、その相対位置「5」を返します。

Excel関数

Posted by 黒箱