Excelで複数一致するINDEX-MATCH(6つの例)

  • これを共有
Hugh West

Excelには、一致する値を取得するためのさまざまな関数や方法があります。 状況に応じて、ユーザーは自分の好みを選択することができます。 このチュートリアルでは、以下の方法で結果を取得する方法を説明します。 INDEX MATCH をExcelで複数マッチングさせたものです。

まず最初に、今日のワークブックについて知っておきましょう。

今日のワークブックのシートには、商品とその価格の関係が書かれています。 この関係を使って、次のような値を取得する例をいくつか見てみましょう。 たげんてき .

現実の世界では、複数のリレーションシップを持つデータセットを扱い、異なる条件を設定して結果を出す必要があるかもしれません。 今回は、シンプルに、名前とサイズが一致する商品の価格を取得することにします。

練習用ワークブックをダウンロードする

デモに使用したすべての計算式が入ったワークブックは、以下のリンクからダウンロードできます。

INDEX-MATCH with Multiple Matches.xlsx

INDEX-MATCHの基本

INDEX関数の基本

INDEX機能 INDEX関数は、表や範囲内の値や値への参照を返します。 個々の値や、行や列全体の値を取得するために使用できます。 INDEX関数の構文を見てみましょう。

INDEX(配列/参照、行番号、列番号、領域番号)

の配列または参照。 参照するセルまたはセル範囲

row_number。 値を返す配列の行を指定します。

column_numberを指定します。 値を返す配列のカラムを指定します。

area_number。 との交点を返す範囲を参照で選択する。 行番号 列番号 これはオプションのフィールドである。

数式を記述する際に、以下のいずれかを選択することができます。 行番号 または 列番号 を提供する場合。 行番号 の場合は、オプションで 列番号 その逆も然りです。

を確認することができます。 マイクロソフトのサポート のサイトで、より深い構文の内訳を見ることができます。

MATCH関数の基本

実用上、より多く見かける機能としては INDEX 関数は MATCH機能 . MATCH 関数は、セル範囲内の指定された項目の位置を特定するために使用されます。 この関数は、範囲内の特定の項目の相対位置を返します。

の構文 MATCH 関数は

MATCH(lookup_value、lookup_array、match_type)

lookup_value。 lookup_arrayで検索する値。

lookup_array。 検索対象となるセルの範囲。

match_typeを指定します。 任意項目であり、3つの値を挿入することができる。

1 = lookup_valueより小さいか等しい。

0 = 正確なルックアップ値

-1 = lookup_valueと等しいか大きい。

より深く理解したい方は マイクロソフトのサポート のサイトをご覧ください。

6 複数一致でINDEX-MATCH式を使用する好適な例

では、これらの数式や理論を実際にデータセットで使ってみましょう。 私たちは、様々なシナリオを INDEX-MATCH をExcelで複数マッチングさせ、より理解しやすいように異なるセクションで紹介しています。 異なるシナリオでどのように適用できるのか、または特定のものを好む場合は、上の表で見つけることができますので、一緒にご覧ください。

1.複数条件によるINDEX-MATCH

で値を取得する場合 たげんてき 例えば、小さいサイズのシャツの価格を取得する場合、商品名「シャツ」、サイズ「スモール」を設定する必要があります。

では、以下の手順で、Excelでこれらの複数一致のインデックス一致を求める数式を使用する方法を説明します。

ステップス

  • まず、セルを選択します。 G6 .
  • そして、次の式を書き留めてください。

=INDEX(D5:D15,MATCH(1,(G4=B5:B15)*(G5=C5:C15),0))

🔎 フォーミュラの内訳

INDEX(D5:D15,MATCH(1,(G4=B5:B15)*(G5=C5:C15),0))

👉 (G4=B5:B15) (G5=C5:C15) は両方の条件を満たし、どちらかを返します。 または FALSE 数値的には1か0なので、掛け算は両方が真のときに1を返します。

👉 MATCH(1,(G4=B5:B15)*(G5=C5:C15),0) は両方の条件が成立する位置を返します。 この場合、それは1です。

👉 INDEX(D5:D15,MATCH(1,(G4=B5:B15)*(G5=C5:C15),0)) は、数式の前の部分が返した位置にある値を返します。

  • 最後に 入力 .

このように、ExcelでINDEX MATCHを使用して複数の条件や一致をさせることができます。

続きを読む Excelで異なる配列から複数の条件をマッチングさせる方法

2.行と列に属する複数の条件によるINDEX-MATCH

このセクションでは、2つ以上の条件をテストしてルックアップを実行する方法について説明します。 行と列 少し難しく感じるかもしれません。

この例では、サイズ値(Small、Large、M、XL)が個々の列を表すようにテーブルが配置されています。

前項と同様に、基準値として製品と必要なサイズを設定します。

以下の手順で、この部分の計算式の使い方を確認します。

ステップス

  • まず、セルを選択します。 I6 .
  • そして、その中に次の式を書き込んでください。

=index(c5:f7,match(i4,b5:b7,0),match(i5,c4:f4,0))

🔎 フォーミュラの内訳

👉 マッチ(i4,b5:b7,0) の値と完全に一致するものを返します。 I4 範囲内 B5:B7 .

👉 同様に マッチ(i5,c4:f4,0) の値と完全に一致するものを返します。 I5 範囲内 C4:F4 .

👉 最後に インデックス(c5:f7,マッチ(i4,b5:b7,0),マッチ(i5,c4:f4,0))。 は,最初の関数の出力を行番号,2番目の関数を列番号として受け取り, その範囲内の位置にある値を返します。 C5:F7 .

  • その後 入力 .

このように INDEX-MATCH 行と列に属する複数の条件を持つ。

続きを読む Excel インデックス 単一/複数の条件と単一/複数の結果のマッチング

類似の読み物

  • Excelで3つの基準を持つINDEX MATCH(4つの例)
  • Excelで複数シートにまたがるINDEX MATCH(代替案あり)
  • Excelで複数条件のINDEX-MATCH関数で合計する
  • Excelで複数行のインデックスマッチの合計を行う(3つの方法)
  • Excelで最小値を求めるINDEX-MATCHの公式(4つの適切な方法)

3.非隣接列からのINDEX-MATCH

このセクションでは、隣接しない2つの列を使用して一致する値を取得する方法の例を示します。 さらに、以下のようなものが必要です。 IFERROR関数 このシナリオの場合

これがデモ用のデータセットになります。

以下の手順に従って、どのように INDEX-MATCH このデータセットでは、隣接しない列 (製品と量) について

ステップス

  • まず、セルを選択します。 G6 .
  • そして、その中に次の式を書き込んでください。

=IFERROR(INDEX(B4:D7,MATCH(G5,B4:B7,0),MATCH(F6,B4:D4,0)), "No Value")

🔎 フォーミュラの内訳

IFERROR(INDEX(B4:D7,MATCH(G5,B4:B7,0),MATCH(F6,B4:D4,0)), "No Value")

👉 マッチ(g5,b4:b7,0) の値と完全に一致するものを見つける。 G5 範囲内 B4:B7 .

👉 マッチ(f6,b4:d4,0) が完全に一致するものを探します。 F6 は範囲 B4:D4 .

👉 その後 インデックス(b4:d7,マッチ(g5,b4:b7,0),マッチ(f6,b4:d4,0))。 は,1番目の関数値を行番号,2番目の関数値を列番号として受け取り,その位置の値を返す。 B4:D7 .

👉 最後に IFERROR(INDEX(B4:D7,MATCH(G5,B4:B7,0),MATCH(F6,B4:D4,0)), "No Value") は、式の実行中にエラーが発生した場合、文字列 "No Value" を返します。 それ以外の場合は、通常の値を返します。

  • 次に、 を押します。 入力 をキーボードで入力します。

その結果、Excelで、選択した条件に対して、隣接していない列からINDEX-MATCHを使って、複数でも目的の一致を見つけることができるのです。

4.複数テーブルからのINDEX-MATCH

複数のテーブルから一致するものを探すには INDEX-MATCH この関数と並んで必要なのが SMALL , ISNUMBER , , COUNTIF そして イフエラー の機能も備えています。

このシートでは、2つのショップの「商品」を扱っています。

以下の手順で、INDEX-MATCHとこれらの関数を組み合わせて、Excelでこのテーブルのセットから複数のマッチを使用する方法について説明します。

ステップス

  • まず、セルを選択します。 C14 .
  • では、次の式を書き出してみてください。

=ferror(index($c$6:$c$10, small(if(isnumber(match($b$6:$b$10, $c$12, 0), match(row($b$6:$b$10), row($b$6:$b$10)), ""), rows($a$1:a1))), index($f$6:$f$10, small(if(isnumber(match($e$6:$e$10, $c$12, 0), match(row($e$6:$e$10), row($e$6:$e$10)), ""), rows($a$1:a1)-countif($b$6:$b$10, $c$12))), index($1)

🔎 フォーミュラの内訳

iferror(index($c$6:$c$10, small(if(isnumber(match($b$6:$b$10, $c$12, 0)), match(row($b$6:$b$10), row($b$6:$b$10)), ""), rows($a$1:a1))), index($f$6:$f$10, small(if(isnumber(match($e$6:$e$10, $c$12, 0), match(row($e$6:$e$10), row($e$6:$e$10)), ""), rows($a$1:a1)-countif($b$6:$b$10, $c$12)))))

👉 match($b$6:$b$10, $c$12, 0) が完全に一致するものを探します。 C12 範囲内 B6:B10 .

👉 isnumber(match($b$6:$b$10, $c$12, 0)) は、関数内で値が数値であるかどうかをチェックします。

👉 if(isnumber(match($b$6:$b$10, $c$12, 0)), match(行($b$6:$b$10)), 行($b$6:$b$10)), "") ROW($B$6:$B$10)) は、前の関数が数字かどうかをチェックします。 もしそうなら、その出力値を返します。 match(行($b$6:$b$10), 行($b$6:$b$10)) で行番号の配列が一致する位置であり,1番目と2番目の それ以外の場合は、空文字列を返します。

👉 small(if(isnumber(match($b$6:$b$10, $c$12, 0)), match(row($b$6:$b$10), row($b$6:$b$10)), ""), rows($a$1:a1)) を返します。 ROWS($A$1:A1) -配列の中で最も小さい値。

👉 最後に index($c$6:$c$10, small(if(isnumber(match($b$6:$b$10, $c$12, 0)), match(row($b$6:$b$10), row($b$6:$b$10)), "")), rows($a$1:a1))) は、範囲内のその位置の値を返します。 C6:C10 .

👉 index($f$6:$f$10, small(if(isnumber(match($e$6:$e$10, $c$12, 0)), match(row($e$6:$e$10), row($e$6:$e$10)), ""), rows($a$1:a1)-countif($b$6:$b$10, $c$12)))。 は同じことをしますが、式のこの部分では範囲が明らかに異なるので、2番目の表から行います。

👉 最後に、関数全体を受け取り、その中から INDEX-MATCH の組み合わせが影響します。 イフエラー 関数は、計算式の実行中にエラーが発生した場合、値を返すことはありません。

  • 次に、 を押します。 入力 .

  • その後、再びセルを選択し、クリックし、テーブルから残りの値を見つけるために、複数のセルのために塗りつぶしハンドルのアイコンを下にドラッグします。 あなたは余分なセルをドラッグすることができ、Excelは、値がこれ以上ないときに停止されます。

Excelで複数のテーブルの条件を使ってINDEX-MATCHを使う方法です。

続きを読む ExcelでINDEX、MATCH、COUNTIF関数を使用して複数条件を指定する

5.複数のワークシートからのINDEX-MATCH

INDEX-MATCH式は、異なるシート上で使用することができます。 ここでは、2つの異なるワークシート上のこれらの2つのテーブルを持っています。

ショップ1にはショップ1シート、ショップ2にはショップ2シート。

この結果を得るために必要なことは、Cell Referenceの前にSheet名を指定することです。 詳しくは、以下のステップを参照してください。

ステップス

  • まず、セルを選択します。 C14 をシート "Shop 1 "から選択します。
  • そして、次の式を書き留めてください。

=IFERROR(INDEX($C$6:$C$10, SMALL(IF(ISNUMBER(MATCH($B$6:$B$10, $C$12, 0)), MATCH(ROW($B$6:$B$10), ROW($B$6:$B$10)), ""), ROWS($A$1:A1))), INDEX('Shop 2'!$C$6:$C$10, SMALL(IF(ISNUMBER(MATCH('Shop 2'!$B$6:$B$10, $C$12, 0)), MATCH(ROW('Shop 2'!$B$6:$B$10), ROW('Shop 2'!$B$6:$B$10)), ""), ROWS($A$1:A1)-COUNTIF($B$6:$B$10, $C$12))))

🔎 フォーミュラの内訳

IFERROR(INDEX($C$6:$C$10, SMALL(IF(ISNUMBER(MATCH($B$6:$B$10, $C$12, 0)), MATCH(ROW($B$6:$B$10), ROW($B$6:$B$10)), “”), ROWS($A$1:A1))), INDEX(‘Shop 2’!$C$6:$C$10, SMALL(IF(ISNUMBER(MATCH(‘Shop 2’!$B$6:$B$10, $C$12, 0)), MATCH(ROW(‘Shop 2’!$B$6:$B$10), ROW(‘Shop 2’!$B$6:$B$10)), “”), ROWS($A$1:A1)-COUNTIF($B$6:$B$10, $C$12))))

👉 match($b$6:$b$10, $c$12, 0) の値と完全に一致するものを検索します。 C12 範囲内 B6:B10 .

👉 isnumber(match($b$6:$b$10, $c$12, 0)) は、前の関数の出力が数値であるかどうかをチェックします。 これにより、マッチングがあったかどうかを判断します。 これは、数値の値をブール値に変換するだけです。

👉 その後 if(isnumber(match($b$6:$b$10, $c$12, 0)), match(行($b$6:$b$10)), 行($b$6:$b$10)), "") がブール値をチェックし、その値を返す。 match(行($b$6:$b$10), 行($b$6:$b$10)) は、値が真の場合は空文字列を返します。 match(行($b$6:$b$10), 行($b$6:$b$10)) の部分は、以下のような一連の数値です。 行($b$6:$b$10) 行($b$6:$b$10) これは、選択されたセクションの行の総数を制限するための便利なトリックにすぎません。

👉 その後です。 small(if(isnumber(match($b$6:$b$10, $c$12, 0)), match(row($b$6:$b$10), row($b$6:$b$10)), ""), rows($a$1:a1)) を検索しています。 ROWS($A$1:A1) の出力から-番目に小さい値。 イフ の部分です。

👉 最後に index($c$6:$c$10, small(if(isnumber(match($b$6:$b$10, $c$12, 0)), match(row($b$6:$b$10), row($b$6:$b$10)), "")), rows($a$1:a1))) は,前の関数の出力を行番号として受け取り ROWS($A$1:A1) を列番号とし,範囲内のこの位置にある値を返します。 C6:C10 .

👉 同様に INDEX('Shop 2'!$C$6:$C$10, SMALL(IF(ISNUMBER(MATCH('Shop 2'!$B$6:$B$10, $C$12, 0)), MATCH(ROW('Shop 2'!$B$6:$B$10), ROW('Shop 2'!$B$6:$B$10))), "") は同じように2枚目のシートから計算します。 シート名が「Shop2」なので、範囲/セルを選択する前に追加しています。 計算を行うシートには追加する必要はありません。 ですから、計算式の前の部分で「Shop1」については追加していません。

👉 最後に、関数全体を イフエラー その理由は,計算式の実行中にエラーが発生した場合に備えて,空白を返すようにするためです.

  • 最後に 入力 .

  • ここで、もう一度セルを選択し、いくつかのセルの塗りつぶしハンドルアイコンをクリックし、下にドラッグします(出力セルの推定量より多くても問題ありません)。

その結果、Excelの複数のワークシートからINDEX-MATCHを使用してすべての一致を見つけることになります。

6.配列のない複数条件でのINDEX-MATCH

また、INDEX-MATCHは配列なしで複数のマッチや条件に使用することができます。 例えば、次のデータセットがあるとします。

しかし、それを実現するにはまずヘルパーカラムが必要です。 ここでは CONCATENATE関数 は、当該機能に加え、以下の手順でガイドします。

ステップス

  • まず、セルを選択します。 F5 を書き、次の式を書いてください。

=concatenate(c5,",",d5,",",e5)

  • 次に、 を押します。 入力 .

  • 次に、セルを再度選択し、塗りつぶしハンドルのアイコンをクリックして列の端までドラッグすると、残りのセルに数式が再現されます。

  • 次に、元のデータセットに含まれるすべての100番台のINDEX-MATCHを求めます。 そのために、値を格納するセルを選択します( H5 この場合)。
  • そして、次の式を挿入します。

=INDEX(B5:B19,MATCH("100,100,100",F5:F19,0))

🔎 フォーミュラの内訳

👉 MATCH(“100,100,100”,F5:F19,0) の完全一致を検索します。 100,100,100 範囲内 F5:F19 .

👉 それから INDEX(B5:B19,MATCH(“100,100,100”,F5:F19,0)) は,値がマッチした位置の値を返す。

  • 最後に 入力 .

このように、Excelで複数の条件やマッチングにINDEX-MATCHを使用すると、配列を使用せずに済みます。

ExcelでINDEX-MATCH式を使って複数の値を縦に返す方法

INDEX-MATCHを使って複数の値を縦に返したい場合、次の例を見てみましょう。

以下の手順で、データセットに対してどのようにそれを実現するかを見てみましょう。

ステップス

  • まず、セルを選択します。 F5 .
  • 次に、次の式を書き出す。

=ferror(index($c$5:$c$14,small(if($e$5=$b$5:$b$14,row($b$5:$b$14)-row($b$5)+1),row(1:1))),"")

🔎 フォーミュラの内訳

👉 行($b$5:$b$14) の範囲の行番号を含む配列を返す。 B5:B14 .

👉 行($b$5:$b$14)-行($b$5)+1 配列とセルの行番号の差を返します。 B5 で、この場合は1から10までの単なる配列です。

👉 if($e$5=$b$5:$b$14,行($b$5:$b$14)-行($b$5)+1) の値がどこにあるかチェックします。 E5 は範囲内で等しい B5:B14 を返し、それが真である配列の番号を前の配列から返します。

👉 small(if($e$5=$b$5:$b$14,row($b$5:$b$14)-row($b$5)+1)),row(1:1) は,配列から最小の数を返します。

👉 index($c$5:$c$14,small(if($e$5=$b$5:$b$14,row($b$5:$b$14)-row($b$5)+1)),row(1:1))) の範囲内で,その位置にある値を返します。 C5:C14 .

👉 最後に iferror(index($c$5:$c$14,small(if($e$5=$b$5:$b$14,row($b$5:$b$14)-row($b$5)+1),row(1:1))),"") は、ある値が式の中でエラーとなった場合、空の文字列を返すことを確認する。

  • 3番目に、 を押します。 入力 .

  • 最後に、すべての値を取得するために、いくつかのセルで塗りつぶしハンドルのアイコンをクリックし、下にドラッグします。

このように、ExcelのINDEX-MATCHを使って、複数の値を縦に返すことができるのです。

続きを読む 異なるシートで複数の条件を指定してINDEX MATCHする(2つの方法)

結論

以上、INDEX MATCHを複数マッチさせる方法をいくつかご紹介しました。 参考になれば幸いです。 分かりにくいところがあれば、お気軽にコメントください。 また、他に方法があればお知らせください。

このようなガイドをもっと見たい方は、以下をご覧ください。 Exceldemy.com .

Hugh West は、業界で 10 年以上の経験を持つ、非常に経験豊富な Excel トレーナー兼アナリストです。彼は会計と財務の学士号と経営管理の修士号を取得しています。ヒューは教えることに情熱を持っており、理解しやすい独自の教育アプローチを開発しました。彼の Excel に関する専門知識は、世界中の何千人もの学生や専門家がスキルを向上させ、キャリアで優れた成果を上げるのに役立ってきました。 Hugh はブログを通じて知識を世界に共有し、個人や企業が潜在能力を最大限に発揮できるよう無料の Excel チュートリアルとオンライン トレーニングを提供しています。