「営業部の4月分だけ合計したい」「営業部か総務部の分をまとめて出したい」。Googleスプレッドシートで売上表や経費表を扱っていると、こんな集計にすぐぶつかりますよね。
SUMIF なら書けるのに、条件を2つにした途端に結果が0になる。{} で条件をまとめたら、なぜか片方の部署しか合計されない。原因がわからず、フィルタで絞って電卓で足している人も多いはずです。
この記事では、スプレッドシートのSUMIFS関数を1つのサンプル表で通して解説します。条件の早見表、OR条件の3つの書き方、0やエラーになる原因の確かめ方まで、貼れる数式つきでまとめました。
対応バージョン: Googleスプレッドシート(2026年10月時点のブラウザ版で確認)。
{}の配列条件など、一部の挙動は Excel と異なります。
スプレッドシートのSUMIFS関数の書き方(構文とSUMIFとの違い)
SUMIFS(サムイフス)関数は、指定した条件をすべて満たす行だけを合計する関数です。名前は SUM(合計)+IF(もし)+複数形の S で、「複数の条件つきの合計」という意味。
公式ヘルプにも「行のすべての条件を満たしている必要があります」とあり、条件どうしは AND(かつ)でつながります。条件を重ねるほど、対象の行が絞られていく仕組みです。
基本構文と引数(合計範囲が先頭)
=SUMIFS(合計範囲, 条件範囲1, 条件1, [条件範囲2, 条件2, ...])
| 引数 | 必須/任意 | 内容 |
|---|---|---|
| 合計範囲 | 必須 | 合計したい数値の列(例: 金額) |
| 条件範囲1 | 必須 | 1つ目の条件を調べる列(例: 部署) |
| 条件1 | 必須 | 1つ目の条件(例: "営業部") |
| 条件範囲2, 条件2 … | 任意 | 2つ目以降の条件のペア |
ポイントは、合計範囲がいちばん先頭に来ること。そのあとに条件範囲と条件のペアを、必要な数だけ並べます。
合計範囲は1列で指定します(公式ヘルプにも「複数列にわたる合計を返すことはできません」とあります)。合計範囲と条件範囲の行数もそろえてください。ずれると #VALUE! エラーになります。
サンプル表で2条件の合計を出す
次の表(A1:E9)を最後まで使い回します。B列は日付、D列は TRUE/FALSE の論理値です。
| 行 | A 部署 | B 日付 | C 金額 | D 済 | E 担当 |
|---|---|---|---|---|---|
| 2 | 営業部 | 2026/4/3 | 12000 | TRUE | 田中 |
| 3 | 総務部 | 2026/4/10 | 5000 | FALSE | 佐藤 |
| 4 | 営業部 | 2026/4/18 | 8000 | TRUE | 鈴木 |
| 5 | 開発部 | 2026/5/2 | 15000 | TRUE | 田中 |
| 6 | 営業部 | 2026/5/9 | 3000 | FALSE | 高橋 |
| 7 | 総務部 | 2026/5/20 | 7000 | TRUE | 佐藤 |
| 8 | (空白) | 2026/5/25 | 2000 | FALSE | 田中 |
| 9 | 営業部␣(末尾に半角スペース) | 2026/4/25 | 4000 | TRUE | 鈴木 |
8行目の部署は空白、9行目は「営業部」の後ろに半角スペース入り。実務でよく混ざる「見えないズレ」を、わざと仕込んでいます。
「営業部」かつ「2026年4月」の2条件で合計してみましょう。
=SUMIFS(C2:C9, A2:A9, "営業部", B2:B9, ">="&DATE(2026,4,1), B2:B9, "<="&DATE(2026,4,30))
結果は 20000(2行目の12000+4行目の8000)。期間は「4/1以上」「4/30以下」の2条件を、同じB列に重ねます。
9行目の「営業部␣」も4月ですが、末尾のスペースで “営業部” と一致しません。確かめ方は後半の原因の章で扱います。
SUMIFとの引数順の違い
単一条件の SUMIF関数 とは、合計範囲の位置が逆です。同じ「営業部の合計」を並べてみます。
=SUMIF(A2:A9, "営業部", C2:C9)
=SUMIFS(C2:C9, A2:A9, "営業部")
どちらも結果は 23000(12000+8000+3000)。SUMIF は合計範囲が最後、SUMIFS は先頭です。
| 比較項目 | SUMIF | SUMIFS |
|---|---|---|
| 構文 | SUMIF(範囲, 条件, [合計範囲]) | SUMIFS(合計範囲, 条件範囲1, 条件1, …) |
| 合計範囲の位置 | 最後(省略可) | 先頭(省略不可) |
| 条件の数 | 1つ | 1つ以上(すべて AND) |
SUMIFS は条件1つでも使えます。引数の順番で迷いたくないなら、最初から SUMIFS にそろえてしまうのも手です。
条件の書き方早見表(以上以下・日付・空白・部分一致)
条件の書き方は、パターンさえ覚えれば使い回せます。式はすべて =SUMIFS(C2:C9, …) の「…」部分で、結果はサンプル表での値です。
| やりたいこと | 条件範囲と条件の書き方 | 結果 |
|---|---|---|
| 5000以上・10000未満 | C2:C9, ">=5000", C2:C9, "<10000" | 20000 |
| 営業部以外 | A2:A9, "<>営業部" | 33000 |
| 4月(DATE で指定) | B2:B9, ">="&DATE(2026,4,1), B2:B9, "<="&DATE(2026,4,30) | 29000 |
| 4月(セル参照) | B2:B9, ">="&O10, B2:B9, "<="&O11 | 29000 |
| 5月(EOMONTH で月初〜月末) | 下の本文を参照 | 27000 |
| 部署が空白 | A2:A9, "" | 2000 |
| 部署が空白以外 | A2:A9, "<>" | 54000 |
| 「営業」で始まる | A2:A9, "営業*" | 27000 |
| 「営業」+1文字 | A2:A9, "営業?" | 23000 |
| 済が TRUE | D2:D9, TRUE | 46000 |
| 済が FALSE | D2:D9, FALSE | 10000 |
O10 には =DATE(2026,4,1)、O11 には =DATE(2026,4,30) を入れています。以下、つまずきやすい点だけ補足します。
以上・以下・不一致とセル参照("&" で連結)
比較演算子は >=(以上)、<=(以下)、>、<、<>(等しくない)の5つ。">=5000" のように、演算子と数値をまとめてダブルクォーテーションで囲むのが決まりです。
金額で絞るなら、早見表の1行目のように合計範囲と同じ C列を条件範囲にも指定します(5000+8000+7000=20000)。条件をセルに置くときは、演算子とセルを & でつなぎましょう。
=SUMIFS(C2:C9, B2:B9, ">="&O10, B2:B9, "<="&O11)
これは 29000 です。ところが ">=O10" とセル番地まで引用符に入れると、結果は 0。「O10」という文字列と比べてしまうためで、エラーが出ないぶん気づきにくいミスです。
日付・期間・今月で絞り込む
期間は「開始日以上」と「終了日以下」の2条件で書くのが基本。日付は DATE(年,月,日) で作るか、日付を入れたセルを参照するのが確実です。
文字列の ">=2026/4/1" でも、今回のシートでは 29000 になりました。ただ、地域設定で日付の読み方が変わるおそれがあるので、共有シートでは DATE かセル参照が安心です。
月単位なら、EOMONTH 関数で月初と月末を作ると便利です。5月分はこう書けます。
=SUMIFS(C2:C9, B2:B9, ">="&EOMONTH(DATE(2026,5,15),-1)+1, B2:B9, "<="&EOMONTH(DATE(2026,5,15),0))
結果は 27000(15000+3000+7000+2000)。EOMONTH(日付,-1)+1 が月初、EOMONTH(日付,0) が月末です。
「今月」を自動で追いかけたいときは、DATE(2026,5,15) を TODAY() に置き換えます。
=SUMIFS(C2:C9, B2:B9, ">="&EOMONTH(TODAY(),-1)+1, B2:B9, "<="&EOMONTH(TODAY(),0))
月が替われば、集計の対象も自動で切り替わります。
空白/空白以外・部分一致・チェックボックス
空白の行は ""、空白以外の行は "<>" で指定します。サンプルでは空白の8行目だけが "" に一致して 2000、残りの7行が "<>" で 54000 です。
部分一致にはワイルドカードを使います。* は0文字以上の任意の文字列、? は任意の1文字。SUMIFS のヘルプページには記載がないものの、SUMIF と同じ書き方で使えました。
"営業*" は、末尾にスペースがある9行目も拾って 27000。"営業?" は「営業」+ちょうど1文字なので、9行目(4文字)が外れて 23000 です。
* や ? を文字そのものとして探すときは、前に ~ を付けます。別の小さな表(Q4:R5)で比べてみましょう。
| Q列 | R列 |
|---|---|
| A*B | 100 |
| AxB | 200 |
=SUMIFS(R4:R5, Q4:Q5, "A~*B")
「AB」の行だけに一致して 100 です。~ を外した "AB" は両方に一致して 300。小文字の "a*b" も 300 で、大文字と小文字は区別されません。
チェックボックスの列は、既定ならオンで TRUE、オフで FALSE の論理値です。サンプルの D列と同じなので、D2:D9, TRUE で 46000、FALSE で 10000 になります。文字列の "TRUE" を渡しても 46000 でした。
OR条件(AまたはB)で合計する3つの方法
SUMIFS の条件は、すべて AND でつながります。そのため「営業部または総務部」のような OR は、1つの SUMIFS には書けません。
同じ A列へ "営業部" と "総務部" を並べると、結果は 0。1つのセルが両方に当てはまることはないからです。ここでは「営業部または総務部の合計」(正解は 35000)を3つの方法で出します。
| 方法 | 数式の形 | 結果 | 向いている場面 |
|---|---|---|---|
| 1. SUMIFS の足し算 | SUMIFS(…)+SUMIFS(…) | 35000 | 条件が2〜3個まで |
| 2. MAP と LAMBDA | SUM(MAP({…}, LAMBDA(k, SUMIFS(…)))) | 35000 | 条件が多い・期間も足したい |
| 3. SUMPRODUCT / FILTER | SUMPRODUCT(((…)+(…))*C2:C9) | 35000 | 別の列どうしの OR にも広げたい |
方法1:SUMIFSを足し算する
いちばん素直なのが、部署ごとの SUMIFS を足す方法です。
=SUMIFS(C2:C9, A2:A9, "営業部") + SUMIFS(C2:C9, A2:A9, "総務部")
23000+12000 で 35000。読みやすく、誰が見ても意味がわかるのが強みです。
期間も加えるなら、それぞれの SUMIFS に同じ期間を書き足します。4月分はこうです。
=SUMIFS(C2:C9, A2:A9, "営業部", B2:B9, ">="&O10, B2:B9, "<="&O11) + SUMIFS(C2:C9, A2:A9, "総務部", B2:B9, ">="&O10, B2:B9, "<="&O11)
結果は 25000(営業部 20000+総務部 5000)。条件が増えるほど式が長くなるのが弱点です。
方法2:MAPとLAMBDAで条件のリストを回す
条件の数が多いなら、MAP 関数で「条件のリストを1つずつ SUMIFS に渡す」形にまとめられます。LAMBDA は、渡された値に名前(ここでは k)を付けて式の中で使う関数です。
=SUM(MAP({"営業部","総務部"}, LAMBDA(k, SUMIFS(C2:C9, A2:A9, k))))
MAP が「営業部」「総務部」を順に k へ入れて SUMIFS を2回計算し、SUM で合計して 35000 です。
部署を増やすときは {} の中に足すだけ。期間も、SUMIFS の部分に1回書けば済みます。
=SUM(MAP({"営業部","総務部"}, LAMBDA(k, SUMIFS(C2:C9, A2:A9, k, B2:B9, ">="&O10, B2:B9, "<="&O11))))
こちらも方法1と同じ 25000。部署が増えても式が長くならないのが、足し算に比べた利点です。
方法3:SUMPRODUCTかFILTERで1本にまとめる
SUMPRODUCT関数 なら、条件を + でつなぐことで OR を表せます。
=SUMPRODUCT(((A2:A9="営業部")+(A2:A9="総務部"))*C2:C9)
(A2:A9="営業部") は行ごとに TRUE/FALSE を返し、計算の中では 1/0 として扱われます。2つを足すと「どちらかに当てはまる行」が1になり、金額を掛けて合計すれば 35000 です。
抽出してから合計する FILTER関数 でも、同じ答えになります。
=SUM(FILTER(C2:C9, (A2:A9="営業部")+(A2:A9="総務部")))
結果は 35000。ただし、条件に合う行が1つもないと FILTER はエラーを返します。0を表示したい場面では、IFERROR で包んでおきましょう。
やりがちだが効かない書き方:{}とARRAYFORMULA
OR 条件でよく見かけるのが、条件を {} の配列にまとめる書き方です。ところが Googleスプレッドシートの SUMIFS は、ARRAYFORMULA で包んでも配列の条件を展開しません。返るのは最初の条件の値だけです。
| 数式 | 結果 |
|---|---|
=SUMIFS(C2:C9, A2:A9, {"営業部","総務部"}) | 23000 |
=SUM(SUMIFS(C2:C9, A2:A9, {"営業部","総務部"})) | 23000 |
=SUM(ARRAYFORMULA(SUMIFS(C2:C9, A2:A9, {"営業部","総務部"}))) | 23000 |
=ARRAYFORMULA(SUMIFS(C2:C9, A2:A9, {"営業部","総務部"})) | 23000(隣のセルは空) |
=SUM(ARRAYFORMULA(SUMIFS(C2:C9, A2:A9, O2:O3))) ※O2:O3 に営業部・総務部 | 0 |
どれも 35000 になりません。23000 は営業部だけの合計で、総務部の 12000 が抜けています。エラーにならず「それらしい数字」が出るぶん、見落としやすいのが厄介なところ。
対照的に、単一条件の SUMIF なら ARRAYFORMULA で展開されます。
=SUM(ARRAYFORMULA(SUMIF(A2:A9, {"営業部","総務部"}, C2:C9)))
こちらは 35000(ARRAYFORMULA を外すと 23000)。条件の列が1つだけならこの形、2列以上なら方法1〜3を選びましょう。
別の列どうしのORはSUMPRODUCTで
「部署が総務部」または「担当が田中」のように、別の列にまたがる OR もあります。SUMIFS の足し算で書くと、両方を満たす行(総務部で担当が田中)が2回足されてしまいます。SUMPRODUCT なら、行ごとに1回だけ判定できます。
=SUMPRODUCT(((A2:A9="総務部")+(E2:E9="田中")>0)*C2:C9)
>0 で「どちらか1つ以上を満たす行」を1にそろえるのがコツ。サンプルには両方を満たす行がないため、結果は足し算と同じ 41000 です。
SUMIFSで集計表を作る(コピー型と一括型)
部署ごとの合計を一覧にするなら、SUMIFS で集計表を作れます。ここでは O5:O7 に「営業部」「総務部」「開発部」を並べ、隣の P列に合計を出します。
絶対参照でコピーして集計表を作る
基本は、1つ目のセルに式を書いて下へコピーする方法。P5 に次の式を入れます。
=SUMIFS($C$2:$C$9, $A$2:$A$9, $O5)
データの範囲には $ を付けて固定(絶対参照)し、条件の $O5 は行だけ動くようにしています。P7 までコピーすると、23000・12000・15000 が並びます。
月の軸も加えれば、部署×月の表になります。T5:T7 に部署名、U4 と V4 に各月の1日(=DATE(2026,4,1) と =DATE(2026,5,1))を置きます。U5 に次の式を入れ、右下へコピーしましょう。
=SUMIFS($C$2:$C$9, $A$2:$A$9, $T5, $B$2:$B$9, ">="&U$4, $B$2:$B$9, "<="&EOMONTH(U$4,0))
| 部署 | 2026年4月 | 2026年5月 |
|---|---|---|
| 営業部 | 20000 | 3000 |
| 総務部 | 5000 | 7000 |
| 開発部 | 0 | 15000 |
$T5 は列を固定し、U$4 は行を固定するのがポイント。こうすると、縦横どちらにコピーしても参照がずれません。
MAPやBYROWで縦一列を一括で出す
コピーせずに1本の式で縦一列を埋めたいなら、MAP 関数を使います。P5 に次の式を1つ入れるだけです。
=MAP(O5:O7, LAMBDA(k, SUMIFS(C2:C9, A2:A9, k)))
P5:P7 に 23000・12000・15000 が展開されます。MAP を BYROW に替えても、同じ結果になりました。
=ARRAYFORMULA(SUMIFS(C2:C9, A2:A9, O5:O7)) はここでも効かず、先頭の 23000 しか出ません。条件の列が1つだけなら、SUMIF を ARRAYFORMULA で包めば展開できます。
=ARRAYFORMULA(SUMIF(A2:A9, O5:O7, C2:C9))
結果は MAP と同じです。ARRAYFORMULA の使い方は ARRAYFORMULA関数の記事 で解説しています。
期間などの条件は、MAP の中の SUMIFS に書き足します。4月分なら 20000・5000・0 が並ぶ形です。部署×月のクロス集計を1本で作るなら、QUERY関数 や ピボットテーブル が向いています。
SUMIFSが0になる・エラーになる原因と確かめ方
SUMIFS で困るのは、エラーではなく「0」や「少なすぎる数字」が返るケースです。数式は正しく見えるため、原因の当たりを付ける手順を押さえておきましょう。
原因の早見表(症状・原因・直し方)
| 症状 | よくある原因 | 確かめ方 | 直し方 |
|---|---|---|---|
| 一部の行が足されない | 末尾・先頭のスペース | =LEN(A9) が想定より長い | TRIM 関数で整える |
| 見た目は同じなのに一致しない | 全角と半角の違い | COUNTIFS の件数が0 | ASC 関数などで表記をそろえる |
| 金額の一部が足されない | 数値が文字列になっている | =ISTEXT(セル) が TRUE | 数値で入れ直す・VALUE 関数 |
| 日付条件で0になる | 日付が文字列で入っている | =ISNUMBER(セル) が FALSE | 日付として入れ直す・DATEVALUE 関数 |
| セル参照の条件で0になる | ">=O10" と書いている | 数式の引用符の位置を見る | ">="&O10 に直す |
| OR のつもりで0になる | 同じ列に両立しない条件 | 条件範囲が同じ列か見る | 足し算・MAP・SUMPRODUCT |
| 片方の条件しか足されない | 条件を {} で渡している | 条件ごとに SUMIFS を分ける | 足し算・MAP・SUMPRODUCT |
#VALUE! になる | 範囲の行数がそろっていない | 各範囲の開始・終了行を見る | 範囲をそろえる |
サンプルの9行目が、スペースの典型例です。スペース付きの "営業部 " を条件にすると、4000 だけが合計されます。=LEN(A9) は、「営業部」なら3のところが4です。
範囲は終了行が1つ違うだけでも #VALUE! になります(例: =SUMIFS(C2:C8, A2:A9, "営業部"))。そろえるのが面倒なら列全体を指定する手もあり、=SUMIFS(C:C, A:A, "営業部") も 23000 です。
COUNTIFSとISNUMBERで原因を切り分ける
結果がおかしいときは、まず COUNTIFS関数 で「条件に合う行が何件あるか」を数えます。条件の書き方は SUMIFS と同じで、合計範囲を消すだけです。
=COUNTIFS(A2:A9, "営業部", B2:B9, ">="&DATE(2026,4,1), B2:B9, "<="&DATE(2026,4,30))
結果は 2。「営業部の4月は3件のはず」と思うなら、どこかの行が漏れています。条件を1つずつ外して件数の変化を見れば、原因の条件を絞り込めます。
件数が合うのに金額が合わないなら、合計範囲の「型」を疑います。小さな表(Q2:R3)で、文字列の数値を混ぜた例を見てみましょう。
| Q列 | R列 |
|---|---|
| 営業部 | 1000(数値) |
| 営業部 | 5000(="5000" で入れた文字列) |
=SUMIFS(R2:R3, Q2:Q3, "営業部")
結果は 6000 ではなく 1000。文字列の "5000" は合計されません。=ISTEXT(R3) が TRUE、=ISNUMBER(R3) が FALSE なら文字列です。
直すなら、数値として入れ直すのが確実です。元のデータを触れないときは、計算の中で VALUE 関数を使って数値に直します。
=SUMPRODUCT((Q2:Q3="営業部")*VALUE(R2:R3))
これなら 6000 です。
よくある質問とまとめ
よく聞かれる疑問と、ほかの関数との使い分けを整理します。
ExcelのSUMIFSと違いはある?
構文と引数の順番(合計範囲が先頭)、比較演算子とワイルドカード(* ? ~)の書き方は Excel と共通です。
一方、この記事の {} の配列条件や MAP・BYROW の結果は、Googleスプレッドシートで確かめたものです。Excel で同じ集計をするなら、ExcelのSUMIFS関数の記事 をあわせて確認してください。
SUMIF・COUNTIFS・SUMPRODUCT・QUERYとの使い分け
| やりたいこと | 向いている関数・機能 |
|---|---|
| 条件1つで合計 | SUMIF(SUMIFS でも可) |
| 複数条件(AND)で合計 | SUMIFS |
| 条件に合う件数を数える | COUNTIFS |
| 別の列どうしの OR・配列の計算 | SUMPRODUCT |
| 条件で抜き出してから合計 | FILTER+SUM |
| 部署×月などのグループ集計 | QUERY・ピボットテーブル |
迷ったら、「AND だけなら SUMIFS、OR が入るなら SUMPRODUCT か足し算」が出発点。集計表が大きくなったら、QUERY やピボットテーブルへの切り替えを検討してください。
まとめ
スプレッドシートの SUMIFS 関数のポイントをおさらいします。
- 構文は
=SUMIFS(合計範囲, 条件範囲1, 条件1, …)。合計範囲が先頭で、SUMIF とは逆 - 条件はすべて AND。期間は「開始日以上」「終了日以下」の2条件で書く
- セルを条件にするときは
">="&O10のように&でつなぐ - 空白は
""、空白以外は"<>"、部分一致は*と? - OR は「足し算」「SUM+MAP+LAMBDA」「SUMPRODUCT か FILTER」のどれか
{}の条件は ARRAYFORMULA で包んでも、最初の条件しか合計されない- 0になったら COUNTIFS で件数、ISTEXT・LEN でセルの中身を確かめる
まずは手元の表で、=SUMIFS(金額の列, 部署の列, "部署名") の基本形から試してみてください。そこへ条件のペアを1つずつ足していけば、複数条件の集計も迷わず組めるはずです。