条件付きで最大値を求めるExcel MAX IF式

  • これを共有
Michael Brown

この記事では、指定した1つまたは複数の条件に基づいて、Excelで最大値を取得するいくつかの異なる方法を紹介しています。

前回のチュートリアルでは、データセット内の最大の数値を返すMAX関数の一般的な使用方法を説明しました。 しかし、状況によっては、データをさらに掘り下げて、特定の条件に基づいて最大値を見つける必要があります。 これは、いくつかの異なる数式を使用して行うことができ、この記事では、すべての可能な方法について説明します。

    エクセル MAX IF式

    最近まで、Microsoft Excelには、条件に基づいて最大値を取得するMAX IF関数が組み込まれていませんでした。 Excel 2019のMAXIFSの導入により、私たちは簡単な方法で条件付き最大値を行うことができます。

    Excel 2016 以前のバージョンでは、まだ自分で作成する必要があります。 配列式 MAX関数とIF文の組み合わせで

    {=MAX(IF( クライテリア・レンジ = クライテリア , max_range ))}

    この一般的な MAX IF 式が実際のデータでどのように機能するかを見るために、次の例を考えてみましょう。 複数の学生の走り幅跳びの結果を含むテーブルがあるとします。 テーブルには3ラウンドのデータが含まれており、特定の選手、例えば Jacob の最高の結果を探します。 学生名を A2:A10 に、距離を C2:C10 にすると、数式は次のような形になります。

    =MAX(IF(A2:A10="Jacob", C2:C10))

    配列の数式は、Ctrl + Shift + Enterキーを同時に押して入力する必要があります。 その結果、以下のスクリーンショットのように、自動的に中括弧で囲まれます(中括弧を手動で入力するとうまくいきません!)。

    実際のワークシートでは、どこかのセルに条件を入力した方が、数式を変更せずに簡単に条件を変更できるので便利です。 そこで、F1に目的の名前を入力すると、次のような結果になります。

    =max(if(a2:a10=f1, c2:c10))

    この式の仕組み

    IF関数の論理テストでは、名前のリスト(A2:A10)とターゲット名(F1)を比較しています。 この操作の結果はTRUEとFALSEの配列で、TRUE値はターゲット名(Jacob)に一致する名前を表します。

    {false;false;false;true;true;false;false}のようになります。

    については 値が真であれば 引数には、走り幅跳びの結果 (C2:C10) を与えるので、論理テストの評価が TRUE の場合、C 列から対応する数値が返されます。 値_ if_false を省略した場合は、条件を満たさない場合にのみ FALSE を意味する。

    {false;false;false;5.48;5.42;5.57;false;false;false}。

    この配列はMAX関数に渡され、FALSE値を無視した最大数を返す。

    ヒント: 上で説明した内部配列を見るには、ワークシートで数式の該当部分を選択し、F9 キーを押します。 数式の評価モードを終了するには、Esc キーを押してください。

    複数の条件を持つ MAX IF 式

    複数の条件から最大値を求める場合は、次のいずれかの方法で行います。

    ネストされたIF文を使って、追加の条件を含めることができます。

    {=MAX(IF( criteria_range1 = クライテリア1 , IF( criteria_range2 = クライテリア2 , max_range )))}

    または、乗算演算を使用して複数の条件を処理します。

    {=MAX(IF(( criteria_range1 = クライテリア1 ) * ( criteria_range2 = クライテリア2 ), max_range ))}

    例えば、男子と女子の結果が1つの表になっており、ラウンド3の女子の中で最も長いジャンプを見つけたいとします。 それをさせるには、G1に第1の基準(女子)、G2に第2の基準(3)を入力し、以下の計算式で最大値を算出します。

    =max(if(b2:b16=g1, if(c2:c16=g2, d2:d16)))

    =MAX(IF((B2:B16=G1)*(C2:C16=G2), D2:D16))

    どちらも配列式なので、Ctrl + Shift + Enterキーを忘れずに押して、正しく完成させてください。

    下のスクリーンショットにあるように、どちらの数式も同じ結果になるので、どちらを使うかは好みの問題です。 私としては、ブール論理を使った数式の方が読みやすく、IF関数を入れずに好きなだけ条件を追加できるので、構築しやすいと思います。

    これらの計算式の仕組み

    最初の数式は、2つの基準を評価するために2つの入れ子になったIF関数を使用しています。 最初のIF文の論理テストでは、Gender列(B2:B16)の値をG1の基準(「女性」)と比較しています。 その結果は、TRUEとFALSE値の配列で、TRUEは基準に合致するデータを表します。

    {false; false; false; true; true; false; false; false; false; false; false; false; false; false; false; true}。

    同様に、2番目のIF関数では、Round列(C2:C16)の値をG2の基準に対してチェックする。

    については value_if_true の引数に走り幅跳びの結果(D2:D16)を与え、この方法で最初の2つの配列の対応する位置にTRUEがある項目(つまり、性別が「女性」でラウンドが3である項目)を取得することができます。

    {false; false; false; false; false; 4.63; false; false; false; false; false; 4.52}。

    この最後の配列はMAX関数に送られ、最大の数値を返します。

    2番目の式は、1つの論理テストの中で同じ条件を評価し、乗算演算はAND演算子のように動作します。

    TRUEとFALSEの値を何らかの算術演算で使用する場合、それぞれ1と0に変換されます。 また、0を掛けると常に0になるので、結果の配列はすべての条件がTRUEのときだけ1になります。 この配列をIF関数の論理テストで評価し、1(TRUE)要素に対応する距離を返します。

    MAX IF(アレイなし

    私を含む多くのExcelユーザーは、配列式に対して偏見を持ち、可能な限り排除しようとします。 幸い、Microsoft Excelには配列をネイティブに扱う関数がいくつかあり、そのうちの1つであるSUMPRODUCTをMAXの「ラッパー」のようなものとして使用することが可能です。

    配列のない一般的な MAX IF 式は以下の通りである。

    =sumproduct(max(( criteria_range1 = クライテリア1 ) * ( criteria_range2 = クライテリア2 ) * max_range ))

    もちろん、必要に応じて範囲と基準のペアを追加することも可能です。

    この計算式を実際に見るために、先ほどの例のデータを使います。 目的は、ラウンド3での女子選手の最大ジャンプを得ることです。

    =sumproduct(max(((b2:b16=g1) * (c2:c16=g2) * (d2:d16))))

    この式は、通常のEnterキー操作と競合し、array MAX IF式と同じ結果を返します。

    上のスクリーンショットをよく見ると、これまでの例で「x」印のついた無効なジャンプの3行目、11行目、15行目の値が0になっていることに気づきます。

    この式の仕組み

    MAX IF 式と同様に、Gender (B2:B16) と Round (C2:C16) の各列の値をセル G1 と G2 の条件と比較して、2 つの条件を評価します。 その結果、TRUE と FALSE の値からなる 2 つの配列ができます。配列の同じ位置の要素を乗算すると TRUE と FALSE はそれぞれ 1 と 0 になり、1は両方の条件を満たしているものを示します。 3番目に乗算されるのが、TRUE と FALSE です。配列には走り幅跳びの結果 (D2:D16) が格納されます。 また、0 を掛けると 0 になるので、対応する位置に 1 (TRUE) があるものだけが残ります。

    {0; 0; 0; 0; 0; 4.63; 0; 0; 0; 0; 0; 0; 0; 0; 4.52}

    場合 max_range に任意のテキスト値が含まれている場合、乗算演算は#VALUEエラーを返し、数式全体が動作しなくなります。

    MAX関数はここから、指定された条件を満たす最大の数を返します。 結果の1要素{4.63}からなる配列はSUMPRODUCT関数に渡され、最大数をセルに出力します。

    注)この式は特殊なロジックのため、以下のような注意点がありながら動作します。

    • 最高値を検索する範囲は、数字のみでなければなりません。 テキスト値がある場合は、#VALUE!エラーが返されます。
    • ゼロを無視した最大値を求めるには、MAX IF式またはMAXIFS関数を使用します。

    ORロジックによるExcel MAX IF式

    のときの最大値を求める。 何れも の条件を満たした場合、すでにおなじみの配列 MAX IF 式とブーリアンロジックを使用しますが、条件を乗算するのではなく、追加します。

    {=MAX(IF(( criteria_range1 = クライテリア1 ) + ( criteria_range2 = クライテリア2 ), max_range ))}

    また、配列でない次のような式も使えます。

    =sumproduct(max((((;゚Д゚)))))))ガクガクブルブル criteria_range1 = クライテリア1 ) + ( criteria_range2 = クライテリア2 )) * max_range ))

    Excel言語では、ラウンドが2か3であれば、最大値を返すというように、タスクの定式化が異なることに注意してください。

    B2:B10にラウンド、C2:C10に結果、F1とH1に基準を記載すると、次のような式になる。

    =max(if((b2:b10=f1) + (b2:b10=h1), c2:c10))

    Ctrl + Shift + Enter キーの組み合わせで数式を入力すると、このような結果になります。

    同じ条件での最大値も、この非配列式で求めることができる。

    =sumproduct(max(((b2:b10=f1) + (b2:b10=h1))) * c2:c10))

    しかし、SUMPRODUCT MAXは数値データでしか動作しないため、この場合、C列の「x」値をすべてゼロに置き換える必要があります。

    これらの計算式の仕組み

    配列式は、ANDロジックのMAX IFと全く同じように動作しますが、乗算の代わりに加算演算を使用して条件を結合します。 配列式では、加算はOR演算子として機能します。

    B2:B10の値をF1,H1の条件と照らし合わせて得られたTRUEとFALSEの2つの配列を足すと、1と0の配列になり、1はどちらかの条件がTRUEである項目、0は両方の条件がFALSEである項目を表します。 結果として、IF関数はC2:C10内のすべての項目(以下、「TRUE」)を「維持」します。 value_if_true ) のうち、いずれかの条件が TRUE (1)のものは、残りの項目を FALSE に置き換えています。 value_if_false 引数が指定されていない場合。

    配列以外の式も同様ですが、IFの論理テストの代わりに、1と0の配列の要素と、対応する位置の走り幅跳びの結果配列(C2:C10)の要素を掛け合わせます。 これにより、どの条件も満たさない(最初の配列に0がある)項目は無効になり、条件のいずれかを満たす(最初の配列に1がある)項目は維持されます。の配列)。

    MAXIFS - 条件付きで最高値を求める簡単な方法

    Excel 2019、2021、Excel 365のユーザーは、独自のMAX IF式を構築するために配列を飼いならす悩みから解放されます。 これらのバージョンのExcelは、条件付きで最大の値を見つけることを児戯とする待望のMAXIFS関数を提供します。

    MAXIFSの最初の引数には、最大値を求めるべき範囲(ここではD2:D16)を入力し、それ以降の引数には、最大126個の範囲と基準のペアを入力できます。 たとえば、以下のようなものです。

    =maxifs(d2:d16, b2:b16, g1, c2:c16, g2)

    下のスクリーンショットに示すように、このシンプルな数式は、数値とテキストの両方の値を含む範囲を処理することに何の問題もありません。

    この関数の詳細については、Excel MAXIFS関数と計算式の例を参照してください。

    以上、エクセルで条件付きで最大値を求める方法でした。 読んでいただきありがとうございました!また来週のブログでお会いしましょう。

    練習用ワークブック(ダウンロード

    Excel MAX IF式の例(.xlsxファイル)

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