Windows8 & Office2013 Excel2013

Print Friendly

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

投稿日:2017年1月7日 更新日:

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関数が便利です。エラーの場合の値を指定する

VLOOKUP関数のエラー回避

Excelでデータを参照する場合、VLOOKUP関数を使います。 下の左の表、セルC2からセルC7には、VLOOKUP関数が入力されていて、 ...

続きを見る

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

お勧め記事と広告

関連記事

迷惑メールを一気に削除

Outlook2013で迷惑メールを一気に削除する方法です。 迷惑メールの設定をするには、 [ホーム]タブの[削除]グループにある[迷惑メー ...

氏名の列を姓と名の列に分割

Excel2013で氏名セルを姓と名の別々のセルに分ける操作をしていたら、Excel2013のポップヒントに思わずほっこりしました。 下のよ ...

すべての変更を反映し変更の記録を停止

Word2013では、変更履歴に[すべての変更を反映し、変更の記録を停止]というメニューが追加されました。 Word2010までは、[校閲] ...

添付ファイル型の表示方法

Access2007から登場した添付ファイル型ですが、フォームでの表示方法の違いを紹介します。 下のようなテーブル(デザインビュー)を作成し ...

PowerPoint2013もリーダーはない

PowerPointでは、前バージョンからリーダーの設定はできませんでした。 PowerPointでリーダーの設定はできない(PowerPo ...

-Windows8 & Office2013 Excel2013

Copyright © 2001-2017 初心者のためのOffice講座 All Rights Reserved.

Copyright© 初心者のためのOffice講座 , 2017 AllRights Reserved Powered by AFFINGER4.