Excel MATCH関数と計算式の例

  • これを共有
Michael Brown

このチュートリアルでは、ExcelでMATCH関数を使用する方法と、VLOOKUPとMATCHを使用して動的な数式を作成し、ルックアップフォーミュラを改善する方法を数式例を用いて説明します。

Microsoft Excelには、セル範囲内の特定の値を見つけるためのさまざまなルックアップ/リファレンス関数があり、MATCHもその一つです。 基本的には、セル範囲内の項目の相対位置を特定します。 しかし、MATCH関数はその純粋な本質以上に多くのことを行うことができます。

    Excel MATCH関数 - 構文と使い方

    ExcelのMATCH関数は、指定した値をセル範囲から検索し、その値の相対位置を返します。

    MATCH関数の構文は以下のとおりです。

    MATCH(lookup_value、lookup_array、[match_type])

    ルックアップ値 (必須) - 検索したい値。 セル参照だけでなく、数値、テキスト、論理値も可能です。

    ルックアップ_配列 (必須) - 検索するセルの範囲。

    Match_type (オプション) - マッチタイプを定義します。 この値は、1、0、-1のいずれかです。 match_type 引数を 0 に設定すると完全一致のみが返され、他の 2 つのタイプでは近似一致が許可されます。

    • 1または省略(デフォルト) - 探す 最大値 は、 ルックアップ配列の中でルックアップ値より小さいか等しいものです。 ルックアップ配列を昇順でソートする必要があります(小さい順、あるいは A から Z まで)。
    • 0 - 配列中の最初の値を求めます。 ジャスト・イコール をルックアップ値に変換する。 ソートは必要ない。
    • -1 - を求めます。 最小値 配列は、大きいものから小さいものへ、あるいは Z から A へと降順に並べ替えなければなりません。

    MATCH関数をよりよく理解するために、このデータに基づいて簡単な数式を作ってみましょう。 A列に学生の名前、B列に試験のスコアを、大きいものから小さいものへとソートします。 特定の学生(例えば、, ローラ などは、この簡単な計算式を使っています。

    =MATCH("ローラ", A2:A8, 0)

    オプションとして、ルックアップ値をあるセル(この例ではE1)に置き、Excel Matchの数式でそのセルを参照することができます。

    =match(e1, a2:a8, 0)

    上のスクリーンショットにあるように、生徒の名前は任意の順番で入力されているため、生徒の名前を入力するためのパラメータとして マッチタイプ 引数を 0 (完全一致) に設定します。これは、この一致タイプだけがルックアップ配列の値を並べ替える必要がないためです。 技術的には、Match 式はローラの相対位置を返します。 しかし、スコアは大きい順から並べられるため、ローラは全生徒の中で 5 番目のスコアだということも分かります。

    補足:Excel 365とExcel 2021では、MATCHの後継としてより強力になったXMATCH関数を使用できます。

    MATCH関数について知っておくべき4つのこと

    MATCHをExcelで使うのは簡単ですが、他の関数と同様、いくつか注意しなければならない点があります。

    1. MATCH関数は 相対位置 は、値そのものではなく、配列内のルックアップ値を返します。
    2. MATCHは ケースインセンシティブ つまり、テキスト値を扱う際に、小文字と大文字を区別しない。
    3. ルックアップ配列に複数のルックアップ値が含まれる場合、最初の値の位置が返される。
    4. ルックアップ値がルックアップ配列にない場合は、#N/Aエラーを返す。

    ExcelでMATCHを使う方法 - 数式の例

    ExcelのMATCH関数の基本的な使い方がわかったところで、さらに基本を超えた数式の例について説明します。

    ワイルドカードによる部分一致

    他の多くの関数と同様に、MATCHは以下のワイルドカード文字を理解します。

    • クエスチョンマーク(?) - 任意の1文字を置き換えます。
    • アスタリスク(*) - 任意の文字列を置き換えます。

    注:ワイルドカードは、Match formulas で以下の場合にのみ使用できます。 マッチタイプ を0に設定する。

    ワイルドカードを使ったMatch式は、文字列全体ではなく、一部の文字や文字列の一部にのみマッチさせたい場合に有効です。 そのポイントを説明するために、次の例を考えてみましょう。

    地域別の再販業者とその過去1ヶ月の売上高のリストがあるとします。 リスト内のある再販業者の相対的な位置(売上高の降順でソート)を見つけたいのですが、名前を正確に思い出せません(最初の数文字を覚えている)。

    再販業者名がA2:A11の範囲にあり、「car」で始まる名前を検索すると仮定すると、計算式は次のようになります。

    =MATCH("車*", A2:A11,0)

    一致する数式をより汎用的にするには、次のように、あるセル(この例ではE1)にルックアップ値を入力し、そのセルとワイルドカード文字を連結することができます。

    =MATCH(E1& "*",A2:A11,0)です。

    下のスクリーンショットに示すように、この数式は「Carter」の位置である「2」を返します。

    ルックアップ値の1文字だけを置換する場合は、次のようにワイルドカード演算子"? "を使用します。

    =MATCH("ba?er",A2:A11,0)です。

    上記の式は、名前 " ベーカー "と表示され、その相対位置が5であることを再実行します。

    大文字小文字を区別するMATCH式

    このチュートリアルの冒頭で述べたように、MATCH関数は大文字と小文字を区別しません。 大文字と小文字を区別するMatch式を作るには、MATCHと、大文字と小文字を含めて正確にセルを比較するEXACT関数を組み合わせて使用します。

    ここでは、データを照合するための一般的な大文字・小文字を区別する数式を紹介します。

    match(true、exact() ルックアップ配列 , ルックアップ値 ), 0)

    この式は、次のようなロジックで動作します。

    • EXACT 関数は、ルックアップ値とルックアップ配列の各要素を比較し、比較したセルが正確に等しければ TRUE、そうでなければ FALSE を返します。
    • そして、MATCH関数がTRUEを比較し(これはその ルックアップバリュー ) を EXACT が返す配列の各値と比較し、最初にマッチした位置を返します。

    Ctrl + Shift + Enterを押さないと正しく完了しない配列式であることをご留意ください。

    ルックアップ値がセルE1にあり、ルックアップ配列がA2:A9であると仮定すると、数式は以下のようになります。

    =match(true, exact(a2:a9,e1),0)

    次のスクリーンショットは、大文字と小文字を区別するExcelのMatch式を示しています。

    2つの列の一致と相違を比較する(ISNA MATCH)

    2つのリストの一致と相違をチェックすることは、Excelで最も一般的な作業の1つであり、さまざまな方法で行うことができます。 ISNA/MATCH式は、その1つです。

    IF(ISNA(MATCH( List1 の 1 番目の値 , リスト2 , 0)), "Not in List 1", "")

    リスト1の中に存在しないリスト2の値に対して、この式は " リスト 1 に含まれない ". そして、こうです。

    • MATCH関数は、リスト1の値をリスト2内で検索し、値が見つかった場合はその相対位置を、そうでない場合は#N/Aエラーを返します。
    • ExcelのISNA関数は、#N/Aエラー(「利用できない」という意味)をチェックします。 与えられた値が#N/Aエラーの場合はTRUEを、それ以外はFALSEを返します。 この場合、TRUEはリスト1の値がリスト2内で見つからない(つまり、MATCHによって#N/Aエラーが返される)ことを意味しています。
    • リスト1に表示されない値に対してTRUEを表示するのは、ユーザーにとって非常に分かりにくいので、ISNAにIF関数を巻いて、""を表示します。 リスト 1 に含まれない " の代わりに、好きなテキストを入力してください。

    例えば、B列の値とA列の値を比較する場合、数式は次のような形になる(B2は最上部のセル)。

    =IF(ISNA(MATCH(B2,A:A,0)), "Not in List 1", "")

    ExcelのMATCH関数は、それ自体では大文字小文字を区別しません。 大文字小文字を区別するようにするには、EXACT関数を ルックアップ_アレイ 引数で、Ctrl + Shift + Enter キーを忘れずに押して、これを完了します。 配列式 :

    =IF(ISNA(MATCH(TRUE, EXACT(A:A, B2),0)), "リスト1にはありません", "")

    次のスクリーンショットは、両方の数式を表示したものです。

    Excelで2つのリストを比較する他の方法については、次のチュートリアルを参照してください:Excelで2つの列を比較する方法。

    Excel VLOOKUPとMATCH

    この例では、Excel VLOOKUP関数の基本的な知識があることを前提としています。 また、Excel VLOOKUP関数の多くの制限(その詳細な概要は、Excel VLOOKUPが機能しない理由にて確認できます)に直面し、より堅牢な代替手段を探している可能性があります。

    VLOOKUPの最も厄介な欠点の1つは、ルックアップテーブル内の列を挿入または削除すると動作しなくなることです。 これは、VLOOKUPが指定した戻り列の番号(インデックス番号)に基づいて一致する値を引き出すために発生します。 しすう が数式に「ハードコード」されている場合、Excelは表に新しい列が追加されたり削除されたりしても、その列を調整することができません。

    ExcelのMATCH関数は、以下のような処理を行います。 相対位置 をルックアップ値として使用することができる。 col_index_num つまり、VLOOKUPの引数で戻り値の列を静的な数値で指定するのではなく、MATCHでその列の現在位置を取得するのです。

    理解しやすくするために、学生の試験のスコアを含むテーブルを再び使用しましょう (このチュートリアルの最初に使用したものと同様です)。ただし、今回は相対的な位置ではなく、実際のスコアを取得します。

    ルックアップ値がセルF1にあり、テーブル配列が$A$1:$C$2(他のセルに数式をコピーする場合は、絶対セル参照を使用してロックするのが良い方法です)であると仮定すると、数式は次のようになります。

    =vlookup(f1, $a$1:$c$8, 3, false)

    第3引数( col_index_num ) が 3 に設定されているのは 数学スコア 下のスクリーンショットにあるように、この通常のVlookup式はうまく機能します。

    ただし、カラムを挿入または削除するまでの間だけです。

    では、なぜ「#REF!」エラーになるのか? なぜなら col_index_num を 3 に設定すると、Excel は 3 列目から値を取得するようになります。

    このようなことを防ぐために、次のようなMatch関数を入れて、Vlookupの計算式をよりダイナミックにすることができます。

    マッチ(e2,a1:c1,0)

    どこで

    • E2 はルックアップ値であり ジャスト・イコール をリターンカラムの名前、つまり値を取り出したいカラムの名前に置き換えます ( 数学スコア この例では)。
    • A1:C1 はテーブルヘッダを含むルックアップ配列です。

    そして、今度はこのMatch関数を col_index_num の引数は、Vlookup の計算式でこのように指定します。

    =vlookup(f1,$a$1:$c$8, match(e2,$a$1:$c$1, 0), false)

    そして、いくら列を追加したり削除したりしても、非の打ち所がないように動作するようにしてください。

    上のスクリーンショットでは、ユーザーがワークシート内の別の場所に移動しても数式が正しく動作するように、すべてのセル参照をロックしました。 下のスクリーンショットにあるように、列を削除しても数式は正しく動作します。さらに、Excelは賢いので、この場合、絶対参照を適切に調整することができます。

    Excel HLOOKUPとMATCH

    同様に、ExcelのMATCH関数を使って、HLOOKUPの計算式を改良することができます。 一般的な原理は、Vlookupの場合と基本的に同じです。Match関数を使って戻り列の相対位置を取得し、その値を 行インデックス番号 の引数を指定します。

    ルックアップ値がセルB5、テーブル配列がB1:H3、戻り行の名前(MATCHのルックアップ値)がセルA6、行ヘッダーがA1:A3とすると、完全な数式は次のようになります。

    =hlookup(b5, b1:h3, match(a6, a1:a3, 0), false)

    Hlookup/Vlookup & Matchの組み合わせは、通常のHlookupやVlookupの計算式より確かに改善されています。 しかし、MATCH関数によって、それらの制限がすべてなくなるわけではありません。 特に、Vlookup Match式はまだ左側を見ることができず、Hlookup Matchは一番上の行以外を検索できないのです。

    VlookupやHlookupよりも多くの点で優れているINDEX MATCHは、Excelで検索を行うための本当に強力で多様な方法を提供します。 詳しいガイダンスと数式例は、INDEX & MATCH in Excel - a better alternative to VLOOKUPで見ることができます。

    このチュートリアルで説明した例が、あなたの仕事に役立つことを願っています。 読んでくださってありがとうございました。

    練習用ワークブック(ダウンロード

    ExcelのMATCH式の例(.xlsxファイル)

    Michael Brown は、ソフトウェア ツールを使用して複雑なプロセスを簡素化することに情熱を注ぐ熱心なテクノロジー愛好家です。テクノロジー業界で 10 年以上の経験があり、Microsoft Excel と Outlook、さらに Google Sheets と Docs のスキルを磨いてきました。 Michael のブログは、彼の知識と専門知識を他の人と共有することに特化しており、生産性と効率を向上させるためのわかりやすいヒントとチュートリアルを提供しています。経験豊富なプロフェッショナルであろうと初心者であろうと、Michael のブログでは、これらの重要なソフトウェア ツールを最大限に活用するための貴重な洞察と実践的なアドバイスを提供しています。