目次
Excelで作業をしていると、データセットの中から一つ以上の条件を満たす特定の値を調べることがよくあります。 今日は、Excelでデータセットの中から複数の条件を満たす一つ以上の値を調べる方法を紹介します。
練習用ワークブックをダウンロードする
この練習用ワークブックをダウンロードして、この記事を読みながらエクササイズしてください。
複数条件でのルックアップ.xlsx2 Excelで複数の条件で検索する適切な方法
下のデータセットを見てください。 社員ID、社員名、入社日。 と 給与 という会社の Jupyterグループ を使用して、複数の条件を持つ値を検索します。 index、match、xlookup。 と FILTER機能 本日のタスクのデータセットの概要は以下の通りです。
では、このデータ群から、さまざまな種類の複数の条件を満たす値を探してみることにしよう。
方法1:AND型の複数条件を検索する
まず最初に、いくつかの複数の基準で調べてみましょう。 アンド タイプです。 アンド というのは、1つの値がすべての条件を満たさなければならないからです。 ID より大きい 400 を超える給料をもらっている。 $40000 で達成できます。 3 を、さまざまな方法で実現します。
1.1 行と列でINDEX関数とMATCH関数を組み合わせる
本題に入る前に、一目見てきてください。 INDEX と MATCH を持つ従業員を探し出す。 ID より大きい 400 を超える給料をもらっている。 $40000 を使用しています。 INDEX-MATCH 以下の手順に従ってください。
ステップス
- まず、セルを選択します。 G7 を書き、次の式を書いてください。
=INDEX(C5:C16,MATCH(1,(B5:B16>400)*(E5:E16>40000),0),1)
- その後 入力 を持つ社員を発見しました。 ID より大きい 400 を超える給料をもらっている。 $40000 , リチャード・サミュエルソン .
- B5:B16>400 を貫き通す。 身分証明書 並み居る B の配列を返す。 真 と ファルス , 真 があれば ID よりも大きいです。 400 そうでなければ ファルス .
- E5:E16>40000 を貫き通す。 俸給 並み居る E の配列を返す。 真 と FALSE , 真 よりも大きい場合、給与は $40,000 そうでなければ FALSEです。
- (B5:B16>400)*(E5:E16>40000) の2つの配列を掛け合わせます。 真 と ファルス を返します。 1 というときに ID よりも大きいです。 400 を超え、かつ給与が $40,000 .そうでなければ、次のようになります。 0 .
- MATCH(1,(B5:B16>400)*(E5:E16>40000),0) を経由して、配列 (B5:B16>400)*(E5:E16>40000) のシリアルナンバーを返します。 1 に遭遇する。
- この場合、最初の1が通し番号5なので、5を返します。
- 最後に INDEX(C5:C16,MATCH(1,(B5:B16>400)*(E5:E16>40000),0),1) Employee の名前を範囲指定で返します。 C5:C16 の出力に等しい行番号を持つ。 MATCH 関数と列番号が等しい 1 .
- を持つ社員が求められています。 ID より大きい 400 を超える給料をもらっている。 $40,000 さて、これがわかったら、入社した従業員を調べる計算式を教えてください。 2009年12月31日以前 しかし、給料は受け取っている 25,000ドル未満 .
- その後、セルに以下の数式を入力します。 G7 .
=index(c5:c16,match(1,(d5:d16)
- したがって、ヒット 入力 .さらに、あなたは、取得します。 アンジェラ・ホプキンス を式の戻り値とする。
続きを読む Excelで使える7種類のルックアップ
1.2 XLOOKUP関数の使用
を使って、先の作業を達成することができます。 XLOOKUP でも、覚えておいてください。 XLOOKUP のみで利用可能です。 オフィス365 .本題に入る前に、一目でわかるように XLOOKUP を持つ従業員を探します。 ID より大きい 400 を超える給料をもらっている。 $40,000 を使用しています。 XLOOKUP 以下の手順で学習してみましょう。
ステップス
- まず、セルに以下の数式を入力します。 G7 .
=XLOOKUP(1,(B5:B16>400)*(E5:E16>40000),C5:C16)
- その結果、先ほどと同じ社員ができました。 リチャード・サミュエルソン を持つ従業員の名前です。 ID より大きい 400 を超える給料をもらっている。 $40,000 .
- (B5:B16>400)*(E5:E16>40000) の配列を返します。 1 と 0 , 1 というときに ID よりも大きいです。 400 を超え、かつ給与が $40,000 . 0 でなければなりません。
- XLOOKUP(1,(B5:B16>400)*(E5:E16>40000),C5:C16) まず,配列の中から 1 を探します。 (B5:B16>400)*(E5:E16>40000). を見つけると、その範囲内で隣接するセルの値を返す。 C5:C16 .
続きを読む エクセルでLOOKUP関数を使う方法(4つの適切な例)
1.3 FILTER関数の適用
があります。 INDEX-MATCH とのことです。 XLOOKUP は、条件を満たす値が複数ある場合、最初の値のみを返すという制限があります。 例えば、先ほどの例では、よく見ると、その中に に を持つ従業員。 ID より大きい 400 を超える給料をもらっている。 $40,000 .彼らは リチャード・サミュエルソン と ウスマン・マリク しかし、その INDEX-MATCH とのことです。 XLOOKUP 式で返す 一度だけ の従業員です。 リチャード・サミュエルソン 与えられた条件を満たすすべての値を取得するためには フィルター という関数がありますが、忘れてはいけないのは フィルター 関数も オフィス365 .
ステップス
- を持つ従業員を見つけること。 ID より大きい 400 を超える給料をもらっている。 $40,000 その フィルター の数式になります。
=FILTER(C5:C16,(B5:B16>400)*(E5:E16>40000))
- その後、今度はすべての基準を維持する社員が揃いました。 リチャード・サミュエルソン と ウスマン・マリク .
- (B5:B16>400)*(E5:E16>40000) の配列を返します。 1 と 0 , 1 IDが400以上、給与が4万円以上の場合。 0 それ以外の場合(参照 INDEX-MATCH の項を参照)。
- FILTER(C5:C16,(B5:B16>400)*(E5:E16>40000)) は、配列のすべての値を通過します。 (B5:B16>400)*(E5:E16>40000), を見つけると 1 の範囲から,隣接する値を返す。 C5:C16 .
- を持つすべての従業員を取得することができます。 ID より大きい 400 を超える給料をもらっている。 $40,000 .
- さて、これがわかったら、その間に入社した社員を割り出す計算式を教えてください。 2014年1月1日 と 2016年12月31日 が、給料は 最低でも3万円 はい、その通りです、計算式はこうなります。
=FILTER(C5:C16,(D5:D16>=DATE(2014,1,1))*(D5:D16=30000))
続きを読む Excelで複数の値を検索する方法(10の方法)
方法2:OR型の複数条件を検索する
の複数の条件を満たす値を探してみることにします。 オア タイプです。 オア というのは、すべての条件のうち、少なくとも1つの条件を満たす値を選択しなければならないからです。 では、以前に入社した従業員を探すことにしましょう。 2010年1月1日 を超える給料をもらっていたり $30,000 .
2.1 日付範囲のINDEX関数とMATCH関数の統合
こちらをご覧ください。 INDEX 機能で、こちらをご覧ください。 MATCH 関数を使用することができます。
ステップス
- があります。 INDEX-MATCH の数式は、以下の数式ボックスのようになります。
=INDEX(C5:C16,MATCH(TRUE,((D5:D1630000))>0,0),1)
- ほら、私たちが手に入れたのは ジャック・シンプソン 入社日のある最初の社員 2010年1月1日以前 または、給与 3万円以上 でも、もっとたくさんの社員がいるんですよ。 INDEX-MATCH。 は、最初の1枚しか手に入りません。
- を使い、後で全社員を集めます。 フィルター これは、少なくとも1つの基準に合致する必須の従業員です。
- D5:D16
="" strong=""> の配列を返します。 真 と ファルス . 真 列の入社日が D が2010年1月1日より前の場合。 ファルス でなければなりません。 - E5:E16>30000 の配列も返す。 真 と ファルス . 真 給与が30,000ドルを超える場合。 ファルス でなければなりません。
- (D5:D1630000) の配列を追加して返します。 0, 1, または 2 . 0 基準を満たさない場合 1 1つの基準のみが満たされるときと 2 の両方が満たされたとき。
- ((D5:D1630000))>0 のすべての値を通過します。 (D5:D1630000) を返します。 真 よりも大きい場合、その値は 0 ( 1 と 2 )、および ファルス でなければ( 0 ).
- MATCH(TRUE,((D5:D1630000))>0,0) は、配列のすべての値を通過します。 ((D5:D1630000))>0 を取得し、最初のシリアル番号を返します。 真 .
- この場合、リターン 3 があるため 真 は直列 3 .
- 最後に INDEX(C5:C16,MATCH(TRUE,((D5:D1630000))>0,0),1) の範囲から従業員の名前を返します。 C5:C16 が返すシリアル番号で MATCH 関数を使用します。
さて、これが理解できたら、"and "を持つ従業員を求める公式を教えてください。 ID 未満 300, または1月未満に入社した人 1, 2012, またはそれ以上の給与 $30,000 ?
はい、その通りです。 計算式はこうなります。
=INDEX(C5:C16,MATCH(TRUE,((B5:B16<200)+(D5:D1630000))>0,0),1)
続きを読む エクセルで文字列を検索する方法(7つの適切な方法)
2.2 XLOOKUP関数の適用
を使用して同じ作業を行うことができます。 XLOOKUP 関数を使用します。 XLOOKUP のみで利用可能です。 オフィス365 .
ステップス
- 入社日が1月以前の社員を探すための計算式 1, 2010, またはそれ以上の給与 $30,000 になります。
=XLOOKUP(TRUE,((D5:D1630000))>0,C5:C16)
- ほら、さっきと同じ従業員が出てきましたね。 ジャック・シンプソン .しかし INDEX-MATCH の式で、より多くの従業員が所定の条件を満たしています。 私たちは最初の1つしか得ていません。
- ((D5:D1630000))>0 収益 真 2つの基準のうち少なくとも1つが満たされる場合、それ以外の場合 ファルス .前項をご参照ください。
- XLOOKUP(TRUE,((D5:D1630000))>0,C5:C16) というカラムから従業員名を返します。 C5:C16 を取得し、そこで最初の 真 .
続きを読む エクセルで別のシートの値を調べる方法(3つの簡単な方法)
2.3 FILTER関数の使用
最後に、同じ作業を フィルター 関数を使用します。 フィルター 関数は オフィス365 今回は、以前から入社している社員全員を対象とします。 2010年1月1日 を超える給与を受けたり $30,000 .
ステップス
- 下の数式ボックスのような数式になります。
=FILTER(C5:C16,((D5:D1630000))>0)
- したがって、与えられた基準の少なくとも1つを満たすすべての従業員を返します。
- 今回は、指定した条件を満たす、入社日以前の社員がすべて揃いましたね。 2010年1月1日 またはそれ以上の給与 $30,000 .
- ((D5:D1630000))>0 収益 真 2つの基準のうち少なくとも1つが満たされる場合、それ以外の場合 FALSE .参照 INDEX-MATCH のセクションをご覧ください。
- FILTER(C5:C16,((D5:D1630000))>0) は、範囲内のすべてのセルを通過します。 C5:C16 に遭遇した場合、それだけを返します。 真 .
続きを読む エクセルで表を検索する方法(8つの方法)
結論
これらの方法を用いると、任意のデータから複数の条件を満たす値を探すことができる。 他に方法をご存知ですか? あるいは、何か質問がありますか? 遠慮なくお尋ねください。