おすすめ記事

同じカテゴリー

3つの条件を満たす値を求めるには



Excelでリストの中から、3つの条件を満たす値を求める方法です。
先日、職場で ちょっと難しい課題にぶつかってしまいました。
リストの中から3つの条件を満たす値を求めるには?
VLOOKUP関数や、MATCH関数とINDEX関数を組み合わせて・・・といろいろ頭を悩ませました。リストは毎回可変するし、縦と横だけならいいのですが、A列とB列で一致するものを求めて行を確定しなければなりません。一行目の項目も毎回変わるので求める列をMATCH関数検索するしかありません。

こういう時は、SUMPRODUCT関数を使うと便利です。もちろん、INDEX関数とMATCH関数も使います。
表

セルB16には、下のように数式を入力しました。

=INDEX(A1:G11,SUMPRODUCT((A2:A11=B13)*(B2:B11=B14)*ROW(A2:A11)),MATCH(B15,1:1,0))


INDEX関数の関数の引数ダイアログボックスです。
[配列]にはリストの範囲ですね。
[行番号]はSUMPRODUCT関数とROW関数で求めます。
[列番号]はMATCH関数で求めます。
関数の引数ダイアログボックス
行番号は、SUMPRODUCT((A2:A11=B13)*(B2:B11=B14)*ROW(A2:A11))で求めています。
数式
スポンサーリンク

このSUMPRODUCT関数って面白いです。私は知らなくてビックリしました。
興味がある方は、[SUMPRODUCT関数]で検索して調べてみてください。


ふと、思い付いたのですが、A列とB列をくっつけた値をC列に表示すれば、MATCH関数とINDEX関数を組み合わせて求めることもできますね。以下のページで解説しています。
INDEX関数とMATCH関数 / 行と列の交差するセルの値を求める

列を追加した表

求める値は同じになります。
INDEX関数とMATCH関数


【追記】
A列とB列をくっつけた値をC列に表示しなくても、MATCH関数とINDEX関数を組み合わせて求めることができます!下の式で求めることができますね!いろいろ勉強させていただきました。

=INDEX(A2:G11,MATCH(B13&B14,INDEX(A2:A11&B2:B11,),),MATCH(B15,1:1,0))

関数の引数ダイアログボックス表

データ範囲が可変したり、検索する文字列がリストにない場合など、その時の用途によって使い分けてみてください。エラー表示の対処には、IFERROR関数が便利です。エラーの場合の値を指定する

リスト範囲は、名前を付けて置くと便利です。また、リスト範囲が可変する場合は名前定義の参照範囲に数式を入力して範囲が変化しても対応できるようにしておくと便利です。
縦横の範囲が可変する名前定義

トラブルをすぐに解決したいならteratail

おすすめ記事

シェアする