ExcelのSUMIFSとSUMIFで複数条件を指定する - 計算式の例

  • これを共有
Michael Brown

このチュートリアルでは、SUMIF関数とSUMIFS関数の違いを構文と使用法で説明し、Excel 365、2021、2019、2016、2013、2010、以下において複数のAND / OR条件を持つ値を合計する数式の例を紹介します。

Microsoft Excelには、データを使って様々な計算を行うための関数が用意されています。 数回前に、単一の条件と複数の条件に基づいてセルをカウントするCOUNTIFとCOUNTIFSについて説明しました。 先週は、指定した条件を満たす値を加算するSUMIFについて説明しました。 今回は、複数バージョンのSUMIFを説明します。SUMIF - 複数の基準で値を合計することができるExcelのSUMIFSです。

SUMIF関数に慣れている人は、SUMIFSに変換するには、「S」といくつかの基準を追加するだけでいいと思うかもしれません。 これは非常に論理的だと思いますが、Microsoftを扱う場合、「論理的」とは限りません : )。

    Excel SUMIF関数 - 構文 & 使用法

    SUMIF関数は、条件付きで値を合計するために使用されます。 たんじゅん SUMIF構文については、前回詳しく説明しましたが、ここで簡単におさらいしておきましょう。

    SUMIF(range, criteria, [sum_range])
    • レンジ - 基準によって評価されるセルの範囲、必須。
    • クライテリア - 満たすべき条件、必須。
    • sum_range - 条件を満たした場合に合計するセル。

    このように、ExcelのSUMIF関数の構文では、1つの条件しか設定できません。 それでも、ExcelのSUMIFは、複数の条件を持つ値の合計に使用できると言います。 それはなぜかというと、次の例で示すように、複数のSUMIF関数の結果を加算し、配列条件を持つSUMIF数式を使用することで、そのようなことが可能になります。

    Excel SUMIFS関数 - 構文 & 使用法

    エクセルでSUMIFSを使うのは 条件付和を求める .SUMIFS関数は、Excel2007で導入され、それ以降のExcel2010、2013、2016、2019、2021、Excel365のすべてのバージョンで利用可能である。

    SUMIFと比較すると、SUMIFSの構文は少し複雑です。

    SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)

    最初の3つの引数は必須であり、追加の範囲とそれに関連する基準は任意である。

    • sum_range - 合計する1つ以上のセル(必須)。 これは、単一のセル、セルの範囲、または名前の付いた範囲にすることができます。 数字を持つセルのみが合計され、空白とテキストの値は無視されます。
    • criteria_range1 - 関連する基準で評価される最初の範囲、必須。
    • クライテリア1 - 満たすべき最初の条件、必須。 数値、論理式、セル参照、テキスト、または別のExcel関数の形式で条件を指定できます。 たとえば、10、">=10"、A1、"cherries"、TODAY()といった条件を使用することができます。
    • criteria_range2, criteria2, ... - は、追加の範囲とそれに関連する基準で、オプションです。 SUMIFS式では、最大127の範囲と基準のペアを使用できます。

    注意事項

    • SUMIFS式が正しく動作するためには、すべての クライテリア・レンジ と同じ次元の引数でなければなりません。 sum_range つまり、行と列の数が同じであること。
    • SUMIFS関数はAND論理で動作します。つまり、合計範囲内のセルは、指定された基準のすべてを満たす場合、つまりそのセルについてすべての基準が真である場合にのみ合計が行われます。

    SUMIFSの基本的な計算式

    次に、2つの条件を持つExcelのSUMIFS式を見てみましょう。 異なる供給者からの果物の委託をリストした表があるとします。 A列に果物名、B列に供給者名、C列に数量があります。ある果物と供給者に関する金額の合計を求めます。

    新しいことを学ぶときは、常に簡単なことから始めるとよいでしょう。 そこで、まず最初に、SUMIFS式のすべての引数を定義してみましょう。

    • sum_range - C2:C9
    • criteria_range1 - A2:A9
    • criteria1 - "りんご"
    • criteria_range2 - B2:B9
    • criteria2 - "Pete"

    さて、上記のパラメータを組み立てると、次のようなSUMIFSの式が出来上がります。

    =SUMIFS(C2:C9, A2:A9, "りんご", B2:B9, "ピート")

    さらに数式を洗練させるには、「apples」と「Pete」というテキスト基準をセル参照に置き換えればよい。 この場合、別の供給元からの他の果物の数量を計算するために数式を変更する必要はない。

    =sumifs(c2:c9, a2:a9, f1, b2:b9, f2)

    SUMIF関数とSUMIFS関数は、もともと大文字と小文字を区別しません。 大文字と小文字を区別するようにするには、「ExcelのSUMIFとSUMIFS式の大文字と小文字を区別する」を参照してください。

    ExcelのSUMIFとSUMIFSの比較

    このチュートリアルの目的は、複数の条件によって値を合計するすべての可能な方法をカバーすることですので、両方の関数 - Excel SUMIFSと複数条件付きSUMIF - を使った式の例を説明します。 それらを正しく使用するには、これらの2つの関数に何が共通で何が異なるかを明確に理解する必要があります。

    共通する部分(目的やパラメータが似ている)は明確ですが、違いはそれほど明白ではありません、しかし非常に本質的です。

    SUMIFとSUMIFSの大きな違いは4つあります。

    1. 条件数 SUMIFは一度に一つの条件だけを評価するのに対し、SUMIFSは複数の条件をチェックすることができます。
    2. シンタックス SUMIFでは sum_range は最後のオプションの引数で、定義されていない場合は レンジ の引数は合計されます。 SUMIFS を使用します。 sum_range は最初の引数であり、必須である。
    3. レンジの大きさ SUMIF式において。 sum_range は、必ずしも同じ大きさ、形である必要はありません。 レンジ ExcelのSUMIFSでは、左上のセルが右であれば、それぞれ クライテリア・レンジ と同じ数の行と列を含まなければならない。 sum_range の議論になります。

      例えば、SUMIF(A2:A9,F1,C2:C18)は正しい結果を返しますが、これは、SUMIFの左端のセルが sum_range の引数(C2)が正しい。 そこで、Excelは自動的に修正を行い、列と行の数だけ sum_range 在るが儘 レンジ .

      不等間隔の範囲を持つSUMIFS式は、#VALUE!エラーを返します。

    4. 可用性 SUMIF は 365 から 2000 までのすべての Excel バージョンで利用可能です。 SUMIFS は Excel 2007 以降で利用可能です。

    さて、戦略(=理論)は十分なので、戦術(=式の例)に入りましょう : )

    ExcelでSUMIFSを使う方法 - 数式例

    先ほど、2つのテキストを条件とする簡単なSUMIFS式を説明しましたが、同じように、数値、日付、論理式、その他のExcel関数で表される複数の条件でも、Excel SUMIFSを使用することは可能です。

    例1.比較演算子付きExcel SUMIFS

    果物の仕入先のテーブルで、数量が200以上のMikeの納品を合計したいとします。 そのために、criteria2の比較演算子「大なり小なり」(>=)を使って、次のSUMIFS式を得ます。

    =SUMIFS(C2:C9,B2:B9,"Mike",C2:C9,">=200")

    ExcelのSUMIFS式では、比較演算子を含む論理式は必ず二重引用符("")で囲むことに注意してください。

    ExcelのSUMIF関数について説明したときに、可能なすべての比較演算子について詳しく説明しましたが、同じ演算子がSUMIFS条件でも使用できます。 たとえば、次の数式はセルC2:C9の値のうち、200以上300以下のすべての合計を返すものです。

    =SUMIFS(C2:C9, C2:C9,">=200", C2:C9,"<=300")

    例2.ExcelのSUMIFSを日付で使用する場合

    複数の条件を持つ値を現在の日付で合計したい場合は、以下のようにSUMIFS条件でTODAY()関数を使用します。 次の式は、C列の対応する日付が今日を含む過去7日以内にある場合にD列の値の合計を計算します。

    =SUMIFS(D2:D10, C2:C10,">="&TODAY()-7, C2:C10,"<="&TODAY())

    注意:Excelの他の関数と論理演算子を併用する場合、"<="&TODAY() "のように、アンパサンド(&)を使用して文字列を連結する必要があります。

    同様に、ExcelのSUMIF関数を使用して、指定した日付範囲の値を合計することができます。 たとえば、次のSUMIFS式は、B列の日付が2014年10月1日から2014年10月31日の間に含まれる場合にセルC2:C9の値を追加します。

    =SUMIFS(C2:C9, B2:B9, ">=10/1/2014", B2:B9, "<=10/31/2014")

    同じ結果は、この例で示したように、2つのSUMIF関数の差を計算することによっても得られます - 指定した日付範囲の値を合計するSUMIFの使い方。 しかし、Excel SUMIFSの方がはるかに簡単でわかりやすいでしょう?

    例3.空白セルと非空白セルを含むExcel SUMIFS

    レポートやその他のデータを分析する際、空のセルとそうでないセルのどちらかに対応する値の合計が必要になることがよくあります。

    基準 商品説明 計算式の例
    空白のセル "=" 数式や長さ0の文字列など、全く何も含まれていない空白セルに対応する値を合計します。 =sumifs(c2:c10, a2:a10, "=", b2:b10, "=")

    A列とB列の対応するセルが完全に空の場合、セルC2:C10に値を合計する。 "" 他のExcel関数によって返される空の文字列を含む「視覚的な」空白セルに対応する値を合計します(例えば、次のような数式を持つセル)。 =sumifs(c2:c10, a2:a10, "", b2:b10, "")

    セルC2:C10の値を、上記の数式と同じ条件で、空文字列を含めて合計します。 ノンブランク細胞 "" 長さ0の文字列を含む、空でないセルに対応する値を合計する。 =sumifs(c2:c10, a2:a10, "", b2:b10, "")

    A列とB列の対応するセルが空でない場合、セルC2:C10の値を合計する(空文字列のセルも含む)。 サム・スミフ

    または

    SUM / LEN 空でないセルに対応する値の合計。長さ0の文字列は含まない。 =sum(c2:c10) - sumifs(c2:c10, a2:a10, "", b2:b10, "")

    =SUM((C2:C10) * (LEN(A2:A10)>0)*(LEN(B2:B10)>0)))

    A列とB列の対応するセルが空でない場合、セルC2:C10の値を合計する。長さが0の文字列を持つセルは含まれない。

    そして次に、実際のデータに対して「空白」と「非空白」の基準を持つSUMIFS式をどのように使用するかを見てみましょう。

    B列に注文日、C列に納期、D列に数量があるとして、まだ納品されていない商品の合計を求めるにはどうしたらよいでしょうか。 つまり、B列の空でないセルとC列の空のセルに対応する値の合計を知りたいのです。

    解決策は、2つの基準でSUMIFS式を使用することです。

    =sumifs(d2:d10, b2:b10,"", c2:c10,"=")

    Excel SUMIF を複数の OR 条件で使用する

    このチュートリアルの冒頭で述べたように、SUMIFS関数はAND論理で設計されています。 しかし、複数のOR条件、すなわち少なくとも1つの条件を満たしたときに値を合計する必要がある場合はどうでしょうか。

    例1.SUMIF+SUMIF

    最も簡単な方法は、複数のSUMIF関数で返された結果を合計することです。 たとえば、次の式は、MikeとJohnが配達した製品の合計を求める方法を示しています。

    =SUMIF(C2:C9, "Mike",D2:D9) + SUMIF(C2:C9, "John",D2:D9)である。

    ご覧のように、最初のSUMIF関数は「Mike」に対応する数量を足し、もう一つのSUMIF関数は「John」に対応する数量を返し、この2つの数字を足し算します。

    例2.配列引数によるSUM & SUMIF

    上記の解決策は非常にシンプルで、いくつかの条件しかない場合はすぐに解決できるかもしれません。 しかし、複数の OR 条件の値を合計する場合は、SUMIF + SUMIF 式が非常に大きくなります。 この場合、よりよいアプローチは、SUMIF + SUMIF 式を使用することです。 はいれつきじゅん という引数で指定します。

    まず、すべての条件をカンマで区切ってリストアップし、できたカンマ区切りのリストを{カーリーブラケット}で囲みますが、これは技術的には配列と呼ばれます。

    先ほどの例で、John、Mike、Peteの3人が納品した商品を合計したい場合、配列の条件は {"John", "Mike", "Pete"} のようになります。 そして、SUMIF関数の完全版は、次のようになります。 SUMIF(C2:C9, {"ジョン", "マイク", "ピート"} ,D2:D9) .

    3つの値からなる配列引数は、SUMIF式に3つの別々の結果を返させますが、1つのセルに式を書くので、最初の結果だけを返します。 この配列基準アプローチを機能させるには、もう1つちょっとしたトリックを使う必要があります。SUMIF式をSUM関数で囲んで、次のようにしてください。

    =SUM(SUMIF(C2:C9, {"John", "Mike", "Pete"} , D2:D9)))

    ご覧のように、配列の基準を使うと、SUMIF + SUMIFに比べて数式が非常にコンパクトになり、配列の中に好きなだけ値を追加することができます。

    例えば、C列のサプライヤー名の代わりに、1、2、3などのサプライヤーIDがあった場合、SUMIF式は次のようになります。

    =sum(sumif(c2:c9, {1,2,3} , d2:d9))

    テキスト値と異なり、配列の引数では数値を二重引用符で囲む必要はない。

    例3.SUMPRODUCT & SUMIF

    条件を直接数式で指定するのではなく、いくつかのセルに条件を列挙したい場合は、SUMIFとSUMPRODUCT関数を組み合わせて使用すると、指定した配列の成分を掛け合わせて、それらの積の合計を返すことができます。

    =sumproduct(sumif(c2:c9、g2:g4、d2:d9))。

    G2:G4は、以下のスクリーンショットのように、基準を含むセル、この例ではサプライヤーの名前です。

    しかし、もちろん、あなたが望むなら、SUMIF関数の配列の基準に値を列挙することを妨げるものは何もありません。

    =SUMPRODUCT(SUMIF(C2:C9, {"Mike", "John", "Pete"}, D2:D9))

    両方の数式が返す結果は、スクリーンショットに表示されているものと同じになります。

    複数のOR条件を持つExcel SUMIFS

    Excelで条件付き集計を行う場合、単純に複数のOR条件ではなく、複数の条件セットで集計を行う場合は、SUMIFの代わりにSUMIFSを使用しなければなりません。 数式は、先ほど説明したものと非常に似ています。

    いつものように、例を挙げて説明しましょう。 果物の仕入先の表で、納品日(E列)を追加し、10月にマイク、ジョン、ピートが納品した総量を求めましょう。

    例1.SUMIFS+SUMIFS

    この方法で作られた数式は、繰り返しが多く、面倒に見えますが、理解しやすく、何よりうまくいくのです : )

    =SUMIFS(D2:D9,C2:C9, "Mike", E2:E9, ">=10/1/2014", E2:E9, "<=10/31/2014") +。

    SUMIFS(D2:D9, C2:C9, "John", E2:E9, ">=10/1/2014", E2:E9, "<=10/31/2014") +。

    SUMIFS(D2:D9, C2:C9, "Pete", E2:E9, ">=10/1/2014" ,E2:E9, "<=10/31/2014")

    ご覧のように、仕入先ごとに別々のSUMIFS関数を書き、10月1日以上(">=2014/10/1"、)と10月31日以下("<=2014/10/31")という2条件を入れて、結果を合計しています。

    例2.配列引数によるSUM & SUMIFS

    SUMIFの例でこのアプローチの本質を説明しようとしましたので、今度はその式をコピーして、引数の順序を変更し(SUMIFとSUMIFSでは異なることを思い出してください)、追加の基準を追加するだけです。 結果の式は、SUMIFS + SUMIFSよりもコンパクトになります。

    =SUM(SUMIFS(D2:D9,C2:C9, {"Mike", "John", "Pete"}, E2:E9,">=10/1/2014", E2:E9,"<=10/31/2014"))

    この式で返される結果は、上のスクリーンショットにあるものと全く同じです。

    例3.SUMPRODUCT & SUMIFS

    覚えているように、SUMPRODUCTアプローチは、数式で直接指定するのではなく、別々のセルにそれぞれの基準を入力する点で前の2つと異なります。 複数の基準セットの場合、SUMPRODUCT関数では十分ではなく、ISNUMBERとMATCHも使用しなければならないでしょう。

    そこで、セルH1:H3に納入品名、セルH4に開始日、セルH5に終了日を設定すると、SUMPRODUCT式は次のような形になります。

    =SUMPRODUCT(--(E2:E9>=H4), --(E2:E9<=H5), --(ISNUMBER(MATCH(C2:C9, H1:H3,0))), D2:D9)

    SUMPRODUCTの計算式でなぜダッシュ(--)を使うのかと思われる方も多いと思います。 ExcelのSUMPRODUCTは数値以外を無視しますが、この計算式の比較演算子は数値以外のブール値(TRUE / FALSE)を返します。 このブール値を1や0に変換するには、ダブルマイナス記号(専門的にはダブルユニオン演算子と呼ばれます。 最初のユニオンが強制するのは、次のとおりです。2番目の単項は、値を否定、つまり符号を反転させ、SUMPRODUCT関数が理解できる+1や0に変えることができます。

    また、SUMPRODUCTの計算式で比較演算子を使用する場合は、単項演算子(--)を2つ使用することを忘れないでください。

    ExcelのSUMを配列式で使用する

    MicrosoftがSUMIFS関数を実装したのはExcel 2007からなので、Excel 2003や2000以前のバージョンを使っている人がいたら、複数のAND条件の値を足すにはSUM配列式を使わなければなりません。 当然、この方法はExcel 2013 - 2007の最新バージョンでも有効で、SUMIFS関数の昔ながらの対応と見なすことができます。

    前述のSUMIF式では、すでに配列の引数を使用していますが、配列式はそれとは異なるものです。

    例1.Excel2003以前の複数のAND条件でのSUMの場合

    最初の例に戻り、ある果物や仕入先に関する金額の合計を求めましょう。

    すでにご存知のように、この作業は通常のSUMIFS式で簡単に実現できます。

    =SUMIFS(C2:C9, A2:A9, "りんご", B2:B9, "ピート")

    では、SUMIFSを使わないExcelの初期バージョンで、同じ作業を行う方法を見てみましょう。 まず、満たすべき条件をすべてrange="condition "の形で書きます。 この例では、範囲と条件のペアが2つあります。

    条件1:A2:A9="りんご"

    条件2:B2:B9="Pete"

    次に、括弧で囲まれた範囲と条件のペアをすべて「乗算」するSUM式を書きます。 最後の乗算は、合計の範囲(この例ではC2:C9)です。

    =SUM((A2:A9="apples") * ( B2:B9="Pete") * ( C2:C9))

    以下のスクリーンショットに示すように、この数式は最新のExcel 2013バージョンで完全に動作します。

    注意:配列の数式を入力するときは、必ず Ctrl + Shift + Enter を押してください。 この操作を行うと、数式が {curly braces} で囲まれます。これは、配列の数式が正しく入力されたことを視覚的に示すものです。中括弧を手入力しようとすると、数式は文字列に変換され、動作しなくなります。

    例2.最近のExcelバージョンでのSUM配列の計算式

    最近のExcelでも、SUM関数の威力は侮れません。 SUMの配列式は単なる頭の体操ではなく、次の例で示すように実用的な価値があるのです。

    B列とC列があり、C列の値が10以上のとき、C列がB列より何倍大きいかを数える必要があるとします。 即座に思いつくのは、SUM配列の公式を使うことです。

    =SUM((C1:C10>=10)*(C1:C10>B1:B10))

    上記の式に実用性がないと思われる方は、別の方法で考えてみてください : )

    例えば、下のスクリーンショットのような受注リストがあり、指定された日付までに完全な形で納入されていない製品がいくつあるかを知りたいとします。 Excelの言語に置き換えると、次のような条件となります。

    条件1:B列(順序付き項目)の値が0より大きい場合

    条件2:C欄の値(Delivered)がB欄の値より小さいこと。

    条件3:D欄(期限)の日付が2014/11/1未満である。

    3つの範囲・条件のペアを組み合わせると、次のような式になる。

    =SUM((B2:B10>=0)*(B2:B10>C2:C10)*(D2:D10

    このチュートリアルで取り上げた数式は、ExcelのSUMIFSとSUMIF関数ができることのほんの一部です。 しかし、正しい方向性を示すのに役立ち、どんなに複雑な条件を考慮しなければならない場合でも、Excelワークブックの値の合計ができるようになれば幸いです。

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