目次
このチュートリアルでは、新しいExcel XMATCH関数を紹介し、いくつかの一般的なタスクを解決するためにMATCHよりも優れていることを説明します。
Excel 365では、MATCH関数に代わってXMATCH関数が追加されましたが、既存の数式をアップグレードする前に、新しい関数の利点と旧関数との違いをすべて理解しておくことが賢明でしょう。
つまり,XMATCH は MATCH と同じですが,より柔軟で堅牢です. 縦配列と横配列の両方を検索でき,先から最後,最後から先を検索でき,完全,近似,部分一致を検索でき,高速なバイナリ検索アルゴリズムが使用できます.
エクセルXMATCH関数
ExcelのXMATCH関数は、配列またはセル範囲内の値の相対位置を返します。
以下のような構文になっています。
XMATCH(lookup_value、lookup_array、[match_mode]、[search_mode])どこで
ルックアップ値 (必須) - 探す値です。
ルックアップ_配列 (必須) - 検索対象となるセルの配列または範囲。
マッチモード (オプション) - どのマッチ タイプを使用するかを指定します。
- 0 または省略(デフォルト) - 完全一致
- -1 - 完全一致または次に小さい値
- 1 - 完全一致または次に大きな値
- 2 - ワイルドカードマッチ (*, ?)
検索モード (オプション) - 探索方向とアルゴリズムを指定します。
- 1 または省略(デフォルト) - 先頭から最後までを検索します。
- -1 - 最後から最初へ逆順に検索します。
- 2 - バイナリサーチ昇順 要件 ルックアップ_アレイ で昇順にソートされます。
- -2 - バイナリサーチ降順 要件 ルックアップ_アレイ を降順にソートする。
バイナリサーチは、ソートされた配列に対して効率的に動作する高速なアルゴリズムです。 詳細は、サーチモードをご覧ください。
XMATCHが搭載されているExcelのバージョンは?
XMATCH関数は、Excel for Microsoft 365およびExcel 2021でのみ使用できます。 Excel 2019、Excel 2016およびそれ以前のバージョンでは、この関数はサポートされていません。
Excelの基本的なXMATCHの計算式
この関数の機能を知るために、最初の2つの必須引数だけを定義し、オプションの引数はデフォルトのままにして、最も単純な形のXMATCH式を構築してみましょう。
例えば、大きさによってランク付けされた海洋のリスト(C2:C6)があり、特定の海洋のランクを見つけたいとします。 これを行うには、単に海洋の名前を使って、次のようにします。 インディアン をルックアップ値として、名前のリスト全体をルックアップ配列として使用します。
=XMATCH("インド人", C2:C6)
数式をより柔軟にするために、あるセル、例えばF1に関心のある海を入力します。
=xmatch(f1, c2:c6)
その結果、XMATCH式で調べることができるようになります。 縦列 出力は配列中のルックアップ値の相対位置で、この場合オーシャンのランクに相当する。
同様の式で完璧に 水平方向配列 を調整するだけです。 ルックアップ_アレイ を参照してください。
=xmatch(b5, b1:f1)
Excel XMATCH関数 - 覚えておくべきこと
XMATCHをワークシートで効果的に使用し、予期しない結果を防ぐために、以下の3つの簡単な事実を覚えておいてください。
- ルックアップ配列の中にルックアップ値が 2 つ以上存在する場合、その位置は 初戦 が返されます。 サーチモード 引数に 1 を取るか、省略する。 サーチモード を-1 に設定すると,逆順に検索し,その位置を返す。 最後の勝負 この例で示したように
- もし、ルックアップ値 が見つからない の場合、#N/Aエラーが発生します。
- XMATCH関数は ケースインセンシティブ 小文字と大文字を区別するには、この大文字小文字を区別する XMATCH 式を使用します。
ExcelでXMATCHを使用する方法 - 数式の例
以下の例では、XMATCH関数とその実用的な使用方法について、より深く理解することができます。
完全一致と近似一致
XMATCHのマッチング動作は、オプションの match_mode の議論になります。
- 0 または省略 (デフォルト) - 計算式は完全一致のみを検索します。 完全一致が見つからない場合は、#N/A エラーが返されます。
- -1 - この式では、まず完全一致を検索し、次に小さい項目を検索します。
- 1 - 計算式では、まず完全一致を検索し、次に大きな項目を検索します。
例えば、80,000,000km2という面積が、全海洋の中でどの位置にあるかを調べるとする。
完全一致
に0を使用した場合 match_mode これは、ルックアップ値と完全に等しい値を計算式で見つけることができないためです。
=xmatch(80000000, c2:c6, 0)
次の最小項目
に-1を使用した場合 match_mode というのは、検索値より小さい最も近い一致は 70,560,000 であり、それは検索配列の 3 番目の項目だからです。
=xmatch(80000000, c2:c6, -1)
次の最大項目
に1を使用した場合 match_mode というのは、検索値より大きい最も近い一致は 85,133,000 であり、これは検索配列の 2 番目の項目だからです。
=xmatch(80000000, c2:c6, -1)
下の画像に全ての結果が表示されています。
Excelでワイルドカードを使用して部分的にテキストを一致させる方法
XMATCH関数は,ワイルドカードのための特別なマッチモードを持っています。 match_mode 引数を 2 に設定した。
ワイルドカード・マッチ・モードでは、XMATCH式は以下のワイルドカード文字を受け入れることができます。
- クエスチョンマーク(?)で任意の1文字にマッチします。
- アスタリスク(*)で任意の文字列にマッチします。
ワイルドカードは数字ではなく、テキストに対してのみ機能することに留意してください。
例えば、"south "で始まる最初の項目の位置を求めるには、次のような式になります。
=XMATCH("south*", B2:B6, 2)
あるいは、F1 などのセルにワイルドカード表現を入力し、そのセル参照を ルックアップバリュー の議論になります。
=xmatch(f1, b2:b6, 2)
ほとんどのExcel関数では、チルダ(~)を使用して、アスタリスク(~*)または疑問符(~? をワイルドカードではなくリテラル文字として扱います。 XMATCHではチルダは必要ありません。 ワイルドカード一致モードを定義しない場合、XMATCHは ? と * を通常の文字と見なします。
例えば、次の数式は、範囲A2:A7をアスタリスク文字で正確に検索します。
=xmatch("*", a2:a7)
XMATCHの逆引き検索で最後に一致するものを探す
ルックアップ配列の中にルックアップ値が複数存在する場合、その位置を取得する必要があることがあります。 最後の審判 .
検索方向はXMATCHの第4引数で指定する。 サーチモード 縦配列の場合は下から上へ、横配列の場合は右から左へ、逆順に検索します。 サーチモード は-1に設定する必要があります。
この例では、特定のルックアップ値に対する最後のレコードの位置を返すことにします(以下のスクリーンショットをご覧ください)。 そのために、以下のように引数を設定します。
- ルックアップ値 - H1のターゲット営業マン
- ルックアップ_配列 - C2:C10に含まれる販売員名
- マッチモード が0または省略された場合(完全一致)
- 検索モード は-1(最後から2番目)です。
4つの論点をまとめると、こんな式になる。
=xmatch(h1, c2:c10, 0, -1)
ローラが最後に売った数を返します。
Excelで2つの列を比較して一致させる方法
2つのリストの一致を比較するために、XMATCH関数とIF、ISNAを併用することができます。
if( isna( xmatch( ターゲットリスト , search_list , 0)), "一致しない", "一致する")例えば、B2:B10のリスト2とA2:A10のリスト1を比較する場合、数式は以下のような形になります。
=IF(ISNA(XMATCH(B2:B10, A2:A9)), "", "リスト1に一致")
この例では、一致したものだけを識別するので value_if_true の引数は空文字列("")です。
一番上のセル(ここではC2)に上記の数式を入力し、Enter を押すと、自動的に他のセルに「流出」します(これを流出範囲といいます)。
この式の仕組み
この式の中心は、XMATCH関数がリスト1の中にリスト2の値を探すことです。 値が見つかればその相対位置が返され、そうでなければ#N/Aエラーが発生します。 今回の場合、XMATCHの結果は次の配列になります。
{n/a;#n/a;2;#n/a;4;#n/a;#n/a;8;#n/a}.
この配列はISNA関数に渡され、#N/Aエラーをチェックする。 ISNAは#N/Aエラーに対してTRUEを、それ以外に対してFALSEを返す。 その結果、以下の論理値の配列を生成する。TRUEは非マッチ、FALSEはマッチを表している。
{true;true;false;true;false;true;true}のようになります。
上記の配列はIF関数の論理テストに進みます。 最後の2つの引数をどのように設定したかによって、数式は対応するテキストを出力します。 この例では、非マッチ ( value_if_true ) と一致する場合は「Match in List 1」 ( value_if_false ).
注:この数式は、動的配列をサポートするExcel 365およびExcel 2021でのみ機能します。 Excel 2019、Excel 2016またはそれ以前のバージョンを使用している場合は、他のソリューションを確認してください:Excelで2つの列を比較する方法。
ExcelのINDEX XMATCH
XMATCHは、INDEX関数と組み合わせて、INDEX MATCH式と同様に、検索値に関連する別の列から値を取得することができます。 一般的な方法は、次のとおりです。
INDEX ( もどる _ 勢揃い XMATCH ( ルックアップバリュー , ルックアップ_アレイ )ロジックは非常にわかりやすく、簡単に理解することができます。
XMATCH 関数は,ルックアップ配列におけるルックアップ値の相対位置を計算し,それを 行番号 INDEX関数は、行番号に基づき、指定された任意の列から値を返します。
例えば、E1の海の面積を調べるには、このような計算式が使えます。
=index(b2:b6, xmatch(e1, a2:a6))
INDEX XMATCH XMATCHで2次元のルックアップを行う。
列と行を同時に検索するには、INDEXと2つのXMATCH関数を使用します。 最初のXMATCHは行番号を取得し、2番目のXMATCHは列番号を取得します。
INDEX ( データ XMATCH ( ルックアップバリュー , 垂直 _ ルックアップ_アレイ )、XMATCH( ルックアップ値 , ホリゾンタル _ ルックアップ_アレイ ))式は、INDEX MATCH MATCHと似ていますが、省略できる点が異なります。 match_mode 引数を指定します。
例えば、ある商品(G1)の特定の月(G2)の売上数値を取り出すには、次のような式になります。
=index(b2:d8, xmatch(g1, a2:a8), xmatch(g2, b1:d1))
B2:D8は行と列のヘッダーを除いたデータセル、A2:A8は項目リスト、B1:D1は月名です。
大文字・小文字を区別するXMATCH式
すでに述べたように、ExcelのXMATCH関数は、設計上、大文字小文字を区別しません。 強制的に大文字小文字を区別させるには、XMATCHとEXACT関数を組み合わせて使用します。
match(true、exact() ルックアップ_アレイ , ルックアップバリュー ))で検索するには ぎゃくじゅん を最後から順に。
match(true、exact() ルックアップ_アレイ , ルックアップバリュー ), 0, -1)次の例は、この一般的な数式を使ったものです。 B2:B11に大文字小文字を区別した商品IDのリストがあるとします。 E1にある商品の相対位置を求めます。 E2の大文字小文字を区別する数式は、次のように単純なものです。
=xmatch(true, exact(b2:b11, e1))
この処方の仕組み
EXACT 関数は、検索値と検索配列の各項目を比較します。 比較した値が大文字小文字を含めて完全に一致する場合は TRUE、そうでない場合は FALSE を返します。 この論理値の配列 (TRUE は完全一致を表す) は、次のようになります。 ルックアップ_アレイ また、ルックアップ値が TRUE であるため、XMATCH 関数は最初に見つかった完全一致の位置か、最後に見つかった完全一致の位置を返します。 サーチモード の議論になります。
ExcelのXMATCHとMATCHの比較
XMATCHは、MATCHに代わるより強力で汎用性の高い機能として設計されたため、この2つの機能には多くの共通点があります。 しかし、本質的な違いもあります。
デフォルトの動作が異なる
MATCH関数のデフォルトは、完全一致か、次に小さい項目( マッチタイプ を1に設定するか、省略することができる。)
XMATCH関数のデフォルトは完全一致( match_mode を0に設定するか、省略することができる。)
近似一致の場合の動作が異なる
の時は match_mode / マッチタイプ 引数は 1 に設定される。
- MATCH は、完全一致または次善の策で検索する。 ルックアップ配列は昇順でソートされている必要がある。
- XMATCHは、完全一致または次点のものを検索します。 ソートは必要ありません。
の時は match_mode / マッチタイプ 引数は -1 に設定される。
- MATCH は、完全一致または次順位のものを検索します。 ルックアップ配列を降順にソートする必要があります。
- XMATCHは、完全一致または最小のものを検索します。 並べ替えは必要ありません。
ワイルドカード検索
XMATCHで部分一致を見つけるためには match_mode の引数を 2 にする。
MATCH関数には、特別なワイルドカードのマッチモードオプションはありません。 ほとんどの場合、完全一致で設定します( マッチタイプ を0に設定)、これはワイルドカード検索にも有効です。
検索モード
新しいXLOOKUP関数と同様に、XMATCHには特別な サーチモード を定義できる引数です。 探索方向 :
- 1 または省略(デフォルト) - 先頭から最後までを検索します。
- -1 - 逆方向の検索は、最後のものから順に行います。
を選んでください。 バイナリサーチアルゴリズム で非常に迅速かつ効率的です。 せいれつデータ .
- 2 - 昇順にソートされたデータに対するバイナリサーチ。
- -2 - 降順にソートされたデータに対するバイナリサーチ。
バイナリサーチ とも呼ばれます。 ハーフインターバル検索 または たいすうけんさく バイナリサーチは通常の検索よりはるかに高速ですが、ソートされたリストに対してのみ正しく動作します。 ソートされていないデータに対しては、一見正常に見える場合でも間違った結果を返すことがあります。
MATCHの構文には、検索モードの引数が全く用意されていない。
XMATCHは配列をネイティブに扱える
XMATCH関数は、従来の関数と異なり、動的なExcel用に設計されており、Ctrl + Shift + Enterキーを押すことなく、ネイティブに配列を処理します。 これにより、特にいくつかの異なる関数を一緒に使用する場合、数式の作成と編集が非常に簡単になります。 次のソリューションを比較してみてください。
- 大文字・小文字を区別する数式:XMATCH
- 2つの列またはリストの一致を比較する:XMATCH
XMATCHとMATCHの可否
XMATCHは新しい機能で、Excel for Microsoft 365とExcel 2021でのみ利用可能です。
MATCH関数は、Excel 365からExcel 2007までのすべてのバージョンで使用できます。
以上、エクセルでのXMATCH関数の使い方でした。 読んでいただきありがとうございました!来週のブログでお会いできるのを楽しみにしています。
練習用ワークブック(ダウンロード
Excel XMATCH 計算式の例 (.xlsx ファイル)