Excelで2次元のルックアップを行うINDEX MATCH MATCH

  • これを共有
Michael Brown

このチュートリアルでは、Excelで2次元のルックアップを実行するためのいくつかの異なる数式を紹介しています。 選択肢に目を通して、お気に入りのものを選んでください :)

Excelの表計算ソフトで検索を行う場合、通常は列の縦方向や行の横方向に調べることが多い。 しかし、ある行と列の交点にある値を探すために、行と列を横断的に調べることがある。 これは、次のように呼ばれる。 行列ルックアップ 2次元 または 2ウェイ・ルックアップ このチュートリアルでは、4つの異なる方法でそれを行う方法を紹介します。

    Excel INDEX MATCH MATCH式

    Excelで双方向の検索を行う最も一般的な方法は、INDEX MATCH MATCHを使用することです。 これは、従来のINDEX MATCH式のバリエーションで、行と列の両方の番号を取得するためにMATCH関数をもう一つ追加したものです。

    INDEX ( data_array , MATCH ( VLOOKUP_VALUE , ルックアップカラムレンジ 0)、MATCH( ルックアップ値 , ルックアップローレンジ , 0))

    例として、下の表からある年のある動物の個体数を引き出す式を作ってみよう。 手始めに、すべての引数を定義する。

    • データ_配列 - B2:E4(データセル、行と列のヘッダは含まず)
    • Vlookup_value - H1(対象動物)
    • ルックアップカラムの範囲 - A2:A4(行ヘッダー:動物名) - A3:A4
    • Hlookup_value - H2(目標年次)
    • ルックアップローレンジ - B1:E1(カラムヘッダー:年月)

    すべての引数をまとめると、このような二者択一のルックアップの式になります。

    =index(b2:e4, match(h1, a2:a4, 0), match(h2, b1:e1, 0))

    この式の仕組み

    INDEX関数が行番号と列番号をもとにデータ配列から値を取得し、2つのMATCH関数がその値を供給するという、一見すると少し複雑な数式ですが、そのロジックは実に単純で分かりやすいものです。

    INDEX(B2:E4, row_num, column_num)

    ここでは、MATCH(lookup_value, lookup_array, [match_type])の機能を利用して 相対位置 ルックアップバリュー において ルックアップ_アレイ .

    そこで、行番号を得るために、行のヘッダー(A2:A4)をまたいで注目の動物(H1)を検索することになる。

    マッチ(h1, a2:a4, 0)

    列番号を得るには、列のヘッダー(B1:E1)をまたいで対象年(H2)を検索する。

    マッチ(h2, b1:e1, 0)

    いずれの場合も、第3引数を0にすることで完全一致を探す。

    この例では、最初のMATCHは、vlookup値(Polar bear)がA2:A4の2番目のセルであるA3で見つかったので2を返します。 2番目のMATCHは、hlookup値(2000)がB1:E1の3番目のセルであるD1で見つかったので3を返します。

    以上を踏まえると、式は以下のようになる。

    index(b2:e4, 2, 3)

    そして、データ配列B2:E4の2行目と3列目の交点にある値、つまりセルD3の値を返します。

    VLOOKUPとMATCHによる2方向ルックアップの計算式

    Excelで2次元のルックアップを行うもう一つの方法は、VLOOKUP関数とMATCH関数を組み合わせて使用する方法です。

    VLOOKUP( VLOOKUP_VALUE , table_array , MATCH( hlookup_value , ルックアップローレンジ 0), FALSE)

    サンプルのテーブルの場合、式は次のような形になる。

    =vlookup(h1, a2:e4, match(h2, a1:e1, 0), false)

    どこで

    • 表_配列 - A2:E4(行ヘッダを含むデータセル)
    • Vlookup_value - H1(対象動物)
    • Hlookup_value - H2(目標年次)
    • ルックアップローレンジ - A1:E1(カラムヘッダ:年)

    この式の仕組み

    この式の核となるのは、完全一致(最後の引数をFALSEに設定)に設定されたVLOOKUP関数で、テーブル配列の最初の列(A2:E4)から検索値(H1)を探し、同じ行の別の列から値を返します。 どの列から値を返すかは、同じく完全一致(最後の引数を0)に設定したMATCH関数で判断します。

    マッチ(h2, a1:e1, 0)

    MATCHは、列見出し(A1:E1)をまたいでH2の値を検索し、見つかったセルの相対位置を返します。 この場合、対象の年(2010)はルックアップ配列の5番目にあるE1に見つかりました。 つまり、5番が col_index_num VLOOKUPの引数です。

    VLOOKUP(H1, A2:E4, 5, FALSE)

    VLOOKUPはそこから、A2のルックアップ値と完全に一致するものを見つけ、同じ行の5列目、つまりセルE2の値を返します。

    重要な注意!数式が正しく動作するために。 table_array VLOOKUPの(A2:E4)と ルックアップ_アレイ MATCH (A1:E1) の列数は同じでなければならず,そうでなければ,MATCH から col_index_num のカラムの位置と一致しない)。 table_array ).

    行と列を調べるXLOOKUP関数

    最近Microsoftは、VLOOKUP、HLOOKUP、INDEX MATCHなどの既存のルックアップ関数をすべて置き換えることを意図して、Excelにもう1つの関数を導入しました。 中でもXLOOKUPは、特定の行と列の交差点を調べることができます。

    XLOOKUP( VLOOKUP_VALUE , VLOOKUP_COLUMN_RANGE , XLOOKUP( hlookup_value , hlookup_row_range , data_array ))

    今回のサンプルデータセットでは、以下のような式になる。

    =xlookup(h1, a2:a4, xlookup(h2, b1:e1, b2:e4)))

    注)現在、XLOOKUPはベータ版機能であり、Office Insidersプログラムに参加しているOffice 365加入者のみが利用可能です。

    この式の仕組み

    この式では、XLOOKUP の機能を使用して、行または列全体を返します。 内部関数では、ヘッダー行で目的の年を検索し、その年のすべての値 (この例では、1980 年) を返します。 これらの値は return_array の引数を指定します。

    xlookup(h1, a2:a4, {22000;25000;700}))

    外側のXLOOKUP関数は、列のヘッダを越えて対象の動物を探し、return_arrayから同じ位置の値を返す。

    二者択一のルックアップのためのSUMPRODUCT式

    SUMPRODUCT関数は、Excelのスイスナイフのようなもので、特に複数の基準を評価する場合、指定された目的以外にも非常に多くのことを行うことができます。

    行と列の2つの条件を調べるには、この一般的な数式を使用します。

    SUMPRODUCT( VLOOKUP_COLUMN_RANGE = VLOOKUP_VALUE ) * ( hlookup_row_range = hlookup_value ), data_array )

    我々のデータセットで2元検索を行うには、以下のような式になる。

    =sumproduct((a2:a4=h1) * (b1:e1=h2), b2:e4)

    以下の構文でも動作します。

    =sumproduct((a2:a4=h1) * (b1:e1=h2) * b2:e4)

    この式の仕組み

    式の中心では、2つのルックアップ値を行と列のヘッダーと比較している(H1の対象動物とA2:A4の全動物名、H2の対象年とB1:E1の全年を比較している)。

    (a2:a4=h1) * (b1:e1=h2)

    この結果、TRUEとFALSEの2つの配列ができ、TRUEはマッチを表します。

    {false;false;true} * {false,true,false,false}となります。

    乗算はTRUEとFALSEの値を1と0に強制し、4列3行の2次元配列を生成する(行はセミコロン、データの各列はカンマで区切られる)。

    {0,0,0,0;0,0,0,0;0,1,0,0}

    SUMPRODUCT関数は、上記の配列の要素と、同じ位置にあるB2:E4の項目を掛け合わせるものです。

    {0,0,0,0;0,0,0,0;0,1,0,0} * {22000,13800,8500,3500;25000,23000,22000,20000;700,2000,2300,2500}

    そして、0を掛けると0になるので、最初の配列の1に対応する項目だけが生き残る。

    SUMPRODUCT({0,0,0,0;0,0,0,0;0,2000,0,0})

    最後に、SUMPRODUCT は結果の配列の要素を合計して、2000 という値を返します。

    注意: テーブルに同じ名前の行や列ヘッダーが複数ある場合、最後の配列にはゼロ以外の複数の数値が含まれ、それらの数値はすべて合計されます。 結果として、両方の条件を満たす値の合計が得られます。 これは、SUMPRODUCT 式が、最初に見つかった一致を返す INDEX MATCH マッチや VLOOKUP と異なる点です。

    名前付き範囲による行列検索 (明示的な交差)

    もう一つ、Excelで行列を検索する驚くほど簡単な方法は、名前付き範囲を使うことです。 その方法は次のとおりです。

    パート1:列と行の名前

    テーブルの各行と各列に名前を付ける最も手っ取り早い方法は、次のようなものです。

    1. テーブル全体(ここではA1:E4)を選択します。
    2. について 計算式 タブで 定義された名前 グループをクリックします。 選択範囲から作成 または、Ctrl + Shift + F3 のショートカットを押します。
    3. での 選択範囲から名前を作成する ダイアログボックスで 上段 左列。 をクリックし、OKをクリックします。

    これは、行と列のヘッダーをもとに、自動的に名前を作成するものです。 ただし、いくつか注意点があります。

    • 列や行のヘッダーに数字やExcelの名前に使用できない文字が含まれている場合、そのような列や行の名前は作成されません。 作成された名前のリストを見るには、名前マネージャ(Ctrl + F3)を開きます。 一部の名前がない場合は、Excelで範囲に名前を付ける方法 で説明するように手動で定義してください。
    • 行や列のヘッダーの一部にスペースが含まれている場合、そのスペースはアンダースコアなどに置き換えられます。 ポーラー_ベア .

    このサンプルテーブルでは、Excel は行の名前だけを自動的に作成しました。 列の名前は、列のヘッダーが数字であるため、手動で作成する必要があります。 これを解決するには、次のように数字の前にアンダースコアをつければよいでしょう。 _1990 .

    その結果、以下のような名前の付いたレンジが出来上がりました。

    第2回:行列のルックアップ式を作る

    指定した行と列の交点に値を引くには、空のセルに次の一般的な計算式を入力するだけです。

    = 行名 カラム名

    あるいはその逆もしかり。

    = カラム名 行名

    例えば、1990年のシロナガスクジラの個体数を求めるには、次のような簡単な式になる。

    =ブルーホエール _1990

    より詳細な説明が必要な方は、次の手順で説明します。

    1. 結果を表示させたいセルに、等号(=)を入力します。
    2. というように、対象となる行の名前を入力し始めます。 ブルーホエール 数文字入力すると、入力と一致する既存の名前がすべて表示されます。 希望する名前をダブルクリックすると、数式に入力されます。
    3. 行名の後に 空間 として機能します。 交叉演算子 この場合
    4. 対象のカラム名を入力する( _1990 の場合)。
    5. 行と列の両方の名前を入力するとすぐに、Excelは表の中の対応する行と列をハイライト表示し、Enterキーを押して数式を完成させます。

    行列の検索は完了し、以下のスクリーンショットが表示されます。

    以上、Excelで行と列で調べる方法でした。 読んでくださってありがとうございました!来週も当ブログをよろしくお願いします。

    ダウンロード可能なもの

    2次元ルックアップのサンプルワークブック

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