いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Excel)SUMIF関数で空白(以外)を条件にする方法

 SUMIF関数で、セルが空白セル(未入力)であったり、空文字列(関数の戻り値が「""」である場合など)であることを条件として合計を求める方法についてです。「空白以外」を条件にする方法も紹介します。これらの条件についてはSUMIFS関数でも同様です。

「空白セル」を条件にする方法

 空白セル、つまり純粋な未入力セルであることを条件とする例です。
 次の画像では、C列の値(ランク)が空白セルであることを条件としてD列の数値(数量)の合計を求めています。結果は40+35=75となります。

 F3セル

=SUMIF(C3:C8,"=",D3:D8)

 空白セルであることを条件とする場合は第2引数(条件)を「"="」とします。
 単に「""」だと「空白セルか空文字列」という別の意味になります(下記参照)。



 この条件は空文字列(関数の戻り値「""」や、セルに直接「=""」と入力したときの結果。長さ0の文字列)に該当しません。
 次の画像では「=SUMIF(D3:D8,"=",E3:E8)」という式で合計を求めようとしていますが、D列の値は「=IFS(C3>=90,"A",C3>=80,"B",TRUE,"")」といった関数式により出力されたものなので、どの行も該当しません。よって結果は0となります。

 基本的に関数の結果は空白セルにはならないので、このような場合は次の方法を試すのが適当です。

「空白セルか空文字列」を条件にする方法

 空白セル(未入力)か空文字列(関数の戻り値「""」等)に該当することを条件にする場合です。
 「セルに数式が入ってようが結果的に1文字もない」ことを条件にしたい場合はこちらが適当です。
 次の画像では、C列の値(ランク)が空白セルか空文字列であることを条件としてD列の数値(数量)の合計を求めています。結果は40+35=75となります。

 F3セル

=SUMIF(C3:C8,"",D3:D8)

 


 次の画像では「=SUMIF(D3:D8,"",E3:E8)」という式で合計を求めています。
 D列の値は関数式により出力されているものなのでD3セルやD6セルの値は空文字列です。これは「""」という条件に該当するので、40+35=75という結果が求められています。

「空白セル以外」を条件にする方法

 空白セル(未入力)でないことを条件とする例です。
 次の画像ではC列の値(ランク)が空白セルでないことを条件としてD列の数値(数量)の合計を求めています。結果は20+100+50+70=240となります。

 F3セル

=SUMIF(C3:C8,"<>",D3:D8)

 


 ただしこの条件は空文字列(関数の戻り値「""」等)にも該当します。
 次の画像でも同様の式で合計を求めようとしていますが、D列の値は関数式により出力されたものなので空白に見えるセルも空文字列です。結果的にこの条件はD列のすべての値に該当してしまうため、結果は315となります。

「空白セルでも空文字列でもない」を条件にする方法

 SUMIF関数の条件として「空白セルでも空文字列でもない」ことを直接指定するのは困難です。
 そこで次の画像では「すべての合計から差し引く」という方法で、いずれでもない値に対応する数値の合計を求めています。

 F3セル

=SUM(D3:D8)-SUMIF(C3:C8,"",D3:D8)

 上記例で紹介したように条件を「""」とすれば空白セルか空文字列であるセルに該当するので、D列の総和から「""」を条件とする合計を差し引いた結果を求めています。
 これで「空白セルでも空文字列でもない」ことを条件とする合計が求められます。



 同様の式でD列に空文字列が含まれる場合の合計を求めています。もちろん空文字列にも該当しないので上記と同じ結果が得られています。

 なお、他の関数を利用して次のようにすれば引き算なしに同じ結果が得られます。これらの関数では「<>""」という式で「空白セルでも空文字列でもない」ことを直接指定できるのがポイントです。

=SUM(IF(D3:D8<>"",E3:E8,0))
=SUMPRODUCT((D3:D8<>"")*(E3:E8))