SUMIFSで日付を条件に合計を出したいのに、なぜか結果が0になってしまう…。
売上集計や勤怠の時間集計など、日付を軸にした分析ではよくあるつまずきです。
原因の多くは関数の間違いではなく、日付の形式や入力方法のズレにあります。
本記事では、こうしたトラブルを体系的に整理し、再現しやすい具体例とともに解決方法を解説します。
初心者の方はもちろん、普段からExcelを使い込んでいる方でも「そこでつまずくのか」と納得できる内容を目指しました。
日付条件で0になってしまう典型パターンから、シリアル値の考え方、テキスト日付への対処、今日の日付や月単位の絞り込みまで、実務で必要なノウハウを一通りカバーします。
トラブルの原因を根本から理解しておくと、新しい表を作るたびに同じ問題で悩まずに済みます。
ぜひ手元のExcelを開きながら、一つ一つ試しつつ読み進めてみて下さい。
目次
SUMIFS 0になる 日付 条件が合わない原因をまず整理しよう
SUMIFSで日付条件を設定したのに結果が0になる場合、多くは関数そのもののバグではなく、条件と元データの型が一致していないことが原因です。
見た目は日付に見えていても、内部的には文字列で保存されていたり、年月日と時刻が含まれていたりと、Excelの挙動を理解していないと気付きにくい落とし穴が潜んでいます。
また、日本語のスラッシュ区切りや和暦表示など、表示形式の違いもトラブルの引き金になります。
ここではまず、日付条件で0になるときの主な原因を一覧し、どこを疑うべきかの全体像を押さえます。
後続の章でそれぞれの原因ごとに詳しい対策を解説していきますので、最初に全体のパターンを把握しておくと、実務での切り分けが格段に楽になります。
ひとつずつ潰していけば、SUMIFSが0になる問題は必ず解消できます。
なぜSUMIFSは日付条件で0を返しやすいのか
SUMIFSは複数条件を同時に判定するため、どれか一つでも条件から外れると合計対象から除外されます。
数値条件の場合は比較的分かりやすいのですが、日付の場合は内部的にシリアル値として扱われることや、時刻情報を含めて保存されることから、見た目が正しくても一致判定に失敗しやすい特徴があります。
例えば、セルに2024/04/01 10:00と入力していても、画面表示を2024/04/01のみに設定していると、ユーザーには日付だけに見えますが、実際にはシリアル値に時刻が含まれています。
この状態で条件式に 2024/04/01 だけを指定すると、内部的な値が異なるため一致せず、SUMIFSは0を返してしまいます。
また、文字列としての2024/04/01とシリアル値の2024/04/01は別物であり、見た目は同じでも型が違うため条件判定に引っかかりません。
こうしたExcel特有の仕様を押さえておくことが、日付条件で0になる問題を防ぐ第一歩です。
よくあるトラブルパターンを一覧で確認
日付条件でSUMIFSが0になるパターンは、いくつかの典型例に分類できます。
代表的なパターンを一覧にすると次の通りです。
| パターン | 主な原因 |
| 見た目は日付だが文字列 | インポートやコピーで文字列として貼り付けられている |
| 日付と時刻が混在 | 時刻付きデータなのに、条件が日付だけになっている |
| 不正な日付形式 | Excelが日付と認識できないフォーマットで入力されている |
| 演算子と日付の書き方ミス | 条件式の中で = や >= などの書き方が誤っている |
| 日付の範囲指定ミス | 開始日と終了日の範囲外になっている、セル参照がずれている |
自分のシートがどのパターンに該当しそうかを確認しながら読み進めると、原因特定がスムーズになります。
次の章からは、これらのパターンごとに具体例を挙げながら、どこをどのように直せばよいのか詳しく説明していきます。
まず確認したい基本構文と引数の順番
日付形式の問題を疑う前に、SUMIFSの基本構文が正しいかもチェックする必要があります。
SUMIFSの構文は、合計範囲、条件範囲1、条件1、条件範囲2、条件2…という順番で指定します。
この順番が崩れていると、そもそも条件が正しく判定されず、意図しない0が返ってきます。
特に、別シートを参照しているときや表をコピーして流用したときに、セル範囲がずれているケースが多いです。
また、日付条件を直接書き込む場合と、セル参照を使う場合で演算子の書き方が異なります。
例えば、日付がセルA1以上の条件を指定する場合、直接書くなら =SUMIFS(…,”>=”&DATE(2024,4,1))、セル参照なら “>=”&A1 のように連結します。
ここで演算子と日付を分けて書いてしまったり、ダブルクォーテーションの閉じ忘れがあると、式全体が正しく評価されず、結果として0になります。
構文ミスは日付形式以前の問題なので、最初に必ずチェックしておきましょう。
SUMIFSが0になる主な原因1 日付が文字列として保存されている

SUMIFSが0になる原因として最も多いのが、日付が文字列データになっているケースです。
見た目が2024/04/01のように日付に見えていても、インポート元のシステムやCSVの仕様によっては、実際にはテキストデータとして保存されていることがあります。
Excelはシリアル値としての数値と文字列を区別して扱うため、文字列の日付は日付条件のSUMIFSでは一致判定されません。
この問題は、セルの左上に小さな三角形が表示される警告や、左寄せ表示になっているかどうかでもある程度判別できます。
とはいえ、すべてのセルを目視確認するのは非効率なので、変換関数や一括変換の手法をうまく利用することが重要です。
ここでは、文字列日付を見抜く方法と、シリアル値への変換テクニックを解説します。
文字列日付かどうかを一瞬で見分ける方法
文字列かどうかは、セルの表示だけでは判断が付きにくいことがあります。
一番確実なのは、セルの書式設定を標準に変更し、数式バーの内容と併せて確認する方法です。
本物の日付であれば、標準に変更した時点でシリアル値に変わって表示されますが、文字列日付の場合は表示がそのままか、左寄せのままになります。
また、セルに =ISNUMBER(セル) の式を入れて、TRUEかFALSEかで判定する方法も有効です。
もう一つの簡単な確認方法として、セル内で =A1+1 のように1日加算する式を試すテクニックがあります。
本物の日付なら翌日の日付が表示されますが、文字列であればエラーか意図しない結果になります。
このように、Excel側で数値演算できるかどうかを試すことで、内部的な型の違いを素早く見分けられます。
実務では大量のデータを扱うことも多いので、判断基準はできるだけシンプルなものを覚えておくと便利です。
VALUE関数やテキスト区切りで一括変換するテクニック
文字列日付をシリアル値に変換するには、VALUE関数やDATEVALUE関数を利用する方法が定番です。
例えば、A列に文字列日付が並んでいる場合、B1に =VALUE(A1) と入力してコピーし、値として貼り付ければ、一括で数値日付に変換できます。
DATEVALUE関数も同様に機能しますが、こちらは時刻情報を無視して日付部分だけを取り出す点に特徴があります。
もう一つ有効なのが、テキストを列に分割する機能を利用する方法です。
対象列を選択し、区切り位置指定ウィザードで区切り文字を適切に指定することで、Excel側が自動的に日付と認識してシリアル値に変換してくれる場合があります。
特にCSVや外部システムから取り込んだデータでは、この操作だけでまとめて日付型に揃えられることが多いため、覚えておくと非常に便利です。
変換後は、セルの表示形式を日付に設定し直して見た目も整えておきましょう。
文字列日付をそのまま扱いたい場合の代替関数
どうしても文字列日付を日付型に変換できない、あるいは変換したくない事情がある場合は、文字列を前提とした条件指定に切り替える選択肢もあります。
例えば、合計範囲と同じ行に日付文字列があり、そのままの形式で条件をかけたい場合、SUMIFSの条件に文字列として同じ形式を指定することで一致判定は可能です。
ただし、この方法では大小比較や範囲指定が難しくなり、データの並び順にも依存してしまいます。
より柔軟に扱いたい場合は、SUMIFSの代わりにSUMPRODUCTを使い、文字列関数と組み合わせて条件を記述する方法があります。
例えば、LEFT関数やMID関数で年と月を抜き出し、その文字列が一致する行だけを合計するといった使い方です。
しかし、可読性や保守性を考えると、やはり日付型に統一しておく方が安全です。
代替関数はあくまで最終手段として捉え、基本はシリアル値への変換を優先するのがおすすめです。
SUMIFSが0になる主な原因2 日付と時刻が混在している

次に多いのが、日付と一緒に時刻が含まれているデータに対して、日付だけで条件をかけているケースです。
例えば、勤怠システムからエクスポートした打刻データや、注文日時を記録したログなどでは、2024/04/01 09:30:00 のように日時が1つのセルに入っていることがよくあります。
見た目の表示を日付だけにしている場合、ユーザーは日付だけのデータだと思い込みがちですが、内部的には時刻まで含んだシリアル値です。
この状態でSUMIFSの条件に =DATE(2024,4,1) のようにぴったり一致を指定すると、時刻が0:00:00であるデータ以外は一致判定されません。
結果として、その日付にデータがあるはずなのに合計値が0になる、という事象が発生します。
ここでは、時刻付きデータの扱い方と、日付単位で集計するための設定方法を解説します。
表示形式にだまされない シリアル値と時刻の関係
Excelにおける日付と時刻は、どちらもシリアル値という仕組みで表現されています。
整数部分が日付、小数部分が時刻を表し、例えば 2024/04/01 12:00 は 45298.5 のような値になります。
セルの表示形式を日付だけにしていると、0.5の部分は見えないため、ユーザーには単なる 2024/04/01 に見えますが、実際には異なるシリアル値を持っています。
このため、SUMIFSで条件に =DATE(2024,4,1) と指定すると、シリアル値45298.0と比較されることになり、45298.5や45298.25といったデータは一致しません。
対処するには、日付と時刻を分離するか、条件側を範囲指定にして0時から23時59分までをカバーする必要があります。
表示形式はあくまで見た目だけの問題であり、条件判定では内部のシリアル値が使われている点をしっかり意識しておきましょう。
日付のみで集計したいときの条件の書き方
時刻付きのデータを日付単位で集計したい場合は、範囲条件で同じ日付の1日分をカバーするのが基本です。
例えば、B列に日時、C列に金額があり、セルE1に2024/04/01が入っているとします。
このとき、E1の日付に該当する金額合計を求めたい場合、次のようなSUMIFSが有効です。
=SUMIFS(C:C,B:B,”>=”&E1,B:B,”<“&(E1+1))
この式では、B列がE1以上かつE1の翌日未満の範囲を条件にしています。
こうすることで、E1の日付の0時から23時59分59秒までのすべてのデータが対象になります。
等号による完全一致ではなく、日付の下限と上限をセットで指定するイメージです。
この書き方をひな形として覚えておくと、日別集計や稼働時間の集計など、さまざまな場面で応用できます。
INT関数で日付だけを取り出して使う方法
もう一つのアプローチとして、データ側から時刻を切り捨てて日付だけにする方法があります。
シリアル値において、整数部分が日付、少数部分が時刻なので、INT関数を使うと日付のみを取り出せます。
例えば、B列に日時が入っている場合、D列に =INT(B1) と入力してコピーすれば、時刻を含まない日付シリアル値の列が作成できます。
そのうえで、SUMIFSの条件範囲をB列ではなくD列に変更すれば、等号による一致判定でも0時から23時台までを含めた集計が可能になります。
この方法は、日時をそのまま残しておきたい場合に特に有効で、元データを壊さずに日付単位の集計用列を追加したいときに重宝します。
列が増えるというデメリットはありますが、式の可読性が上がり、後から見直したときにロジックを理解しやすいメリットもあります。
SUMIFSが0になる主な原因3 演算子や日付書式の指定ミス
日付型も時刻も問題なさそうなのに0になる場合、演算子と日付の書き方そのものが間違っているケースがよく見られます。
SUMIFSの条件引数では、文字列として演算子を含めた式を書く必要があるため、ダブルクォーテーションやアンパサンドの使い方を間違えると、Excelが意図した通りに解釈してくれません。
また、ロケールの違いによる日付の解釈の違いにも注意が必要です。
この章では、今日から使える正しい日付条件の書き方と、ありがちな記述ミスを比較しながら整理します。
ひな形としてコピーして使える記述パターンを押さえておけば、毎回悩まずに条件式を組み立てられるようになります。
日付の条件式を書くときの基本ルール
SUMIFSで日付条件を書く場合、条件を直接記述するパターンと、セル参照を使うパターンで書き方が異なります。
直接日付を書き込む場合は、次のようにDATE関数を使うと安全です。
=SUMIFS(金額範囲,日付範囲,”>=”&DATE(2024,4,1),日付範囲,”<“&DATE(2024,5,1))
セル参照を使う場合は、”>=”&A1 のように、演算子を文字列として書き、その後ろにセル参照を連結します。
このとき重要なのは、演算子と日付を同じ文字列内にまとめないことです。
“>=2024/4/1” のように書くと、ロケールや設定によっては期待通りに日付として認識されない場合があります。
DATE関数かセル参照を使って、Excelが内部で正しいシリアル値を生成できるようにしておくのがポイントです。
ありがちな記述ミスと正しい書き方の比較
よく見られる誤りと、正しい記述を比較すると次のようになります。
| 誤った書き方 | 問題点 | 正しい書き方 |
| “>=2024/4/1” | 文字列中の日付がうまく解釈されないことがある | “>=”&DATE(2024,4,1) |
| “>=”&”2024/4/1” | 日付が文字列のままになり、シリアル値と不一致 | “>=”&A1 (A1に日付として入力) |
| “>=”&DATE(“2024″,”4″,”1”) | DATEの引数を文字列にしてしまっている | “>=”&DATE(2024,4,1) |
また、範囲指定で開始日と終了日を逆にしてしまうミスも頻発します。
“>=”&終了日, “<=”&開始日 のようになっていないか確認しましょう。
こうしたミスは、ぱっと見で気付きにくいため、ひな形として決まった書式を使う習慣をつけると防ぎやすくなります。
DATE関数・EDATE関数を使った安全な指定方法
手入力による日付指定のミスを減らすには、DATE関数やEDATE関数を積極的に使うのが有効です。
DATE(年,月,日) は、年・月・日をそれぞれ数値で指定でき、月に12を超える値や0以下の値を入れた場合も自動的に繰り上げ・繰り下げして計算してくれます。
EDATE(開始日,月数) は、開始日から月数か月前後の日付を求める関数で、月単位の集計期間を動的に指定する際に便利です。
例えば、セルA1に基準日が入っている場合、その月の1日から末日までを条件にしたSUMIFSは次のように書けます。
=SUMIFS(金額範囲,日付範囲,”>=”&DATE(YEAR(A1),MONTH(A1),1),日付範囲,”<“&EDATE(DATE(YEAR(A1),MONTH(A1),1),1))
このように関数を組み合わせることで、手入力による日付ミスを避けつつ、柔軟な期間指定が可能になります。
頻繁に使うパターンはテンプレートとして保存しておくと、毎回書き直さずに済むので効率的です。
日付条件付きSUMIFSの正しい組み立て方 基本パターンと実例

ここまで原因別のトラブルシューティングを説明してきましたが、実務でよく使うパターンをひな形として覚えておくと、毎回ネット検索をしなくても済むようになります。
この章では、日付条件付きSUMIFSの基本パターンとして、単一日付、日付範囲、今日・今月といった代表的な例を整理します。
どれもシンプルですが、少しの書き違いで0を返してしまうことがあるため、書き方のポイントとあわせて確認しておきましょう。
また、同じ条件をSUMIFSだけでなく、SUMPRODUCTやFILTER関数と組み合わせた活用方法にも触れ、より柔軟な集計の入り口も紹介します。
まずは基本形を確実に書けるようにし、その上で必要に応じて応用形へと発展させていくイメージで読み進めて下さい。
指定した1日だけを合計する基本パターン
ある特定の1日だけの売上などを合計したい場合、最もシンプルなパターンは、セル参照を使ってその日付を指定する方法です。
例えば、B列に日付、C列に売上金額、セルE1に対象日が入っているとします。
このとき、E1の日付分だけを合計する式は次の通りです。
=SUMIFS(C:C,B:B,E1)
ここで重要なのは、B列のデータとE1がどちらも日付型のシリアル値であることです。
どちらか片方でも文字列日付であれば一致判定されず、結果は0になります。
時刻付きデータを扱う場合は、先述のINT関数で日付だけの列を作るか、範囲条件に書き換える必要があります。
単一日付の合計はもっとも頻度の高いパターンなので、必ず自分の環境で正しく動く形を一度構築しておくと安心です。
開始日と終了日で範囲指定するパターン
一定期間の合計を求める場合、開始日と終了日をセルに入力しておき、その範囲でSUMIFSをかけるのが一般的です。
例えば、B列に日付、C列に売上、セルE1に開始日、F1に終了日があるとします。
このときの式は次のようになります。
=SUMIFS(C:C,B:B,”>=”&E1,B:B,”<=”&F1)
ここでの注意点は、開始日と終了日のセルが正しく日付型であること、および演算子を文字列としてダブルクォーテーションで囲み、アンパサンドでセル参照と連結していることです。
また、終了日を含めるか含めないかは要件によって異なるため、”<“か”<=”かを明確に意識して選びましょう。
もし終了日を含めず、翌日未満としたい場合は、”<“&(F1+1) のような書き方もよく使われます。
月別集計など、動的に期間を切り替える応用例
実務では、年月だけを指定してその月の合計を出したい、といったニーズも多くあります。
この場合、セルに基準となる日付を一つ入力し、YEARとMONTHを使ってその月の1日と翌月1日を求めるパターンが便利です。
例えば、B列が日付、C列が売上、セルE1に基準日があるとすると、次の式でその月の合計が求められます。
=SUMIFS(C:C,B:B,”>=”&DATE(YEAR(E1),MONTH(E1),1),B:B,”<“&EDATE(DATE(YEAR(E1),MONTH(E1),1),1))
ここでは、DATE関数で月初日を求め、その1か月後の同日を上限として指定しています。
“<“を使っているため、実質的には翌月の月初前日まで、つまり基準月末日までが対象になります。
基準日を変えるだけで自動的に期間が切り替わるため、売上推移の確認や月次レポートの作成などで重宝します。
この応用パターンは、基礎をしっかり押さえていれば難しくありませんが、最初はテンプレートとしてコピーして使う形でも問題ありません。
トラブルを防ぐためのチェックリストとデバッグのコツ
SUMIFSで日付条件を使うたびに悩まないためには、トラブルが起きたときのチェック手順をあらかじめ決めておくことが重要です。
原因は多岐にわたるように見えますが、順番に確認すれば必ずどこかで矛盾が見つかるようになっています。
この章では、実務で使いやすいチェックリストと、問題箇所を切り分けるためのデバッグテクニックを紹介します。
普段からこの手順に沿って確認する習慣をつけておくと、新しいシートを作った際にも安心して日付条件を組み立てられるようになります。
また、同僚やチームメンバーとシートを共有する場合でも、共通言語として使えるため、問題解決のスピードが上がります。
SUMIFSが0になったときの優先チェック項目
SUMIFSが0を返したときの基本的なチェック手順は、次の通りです。
- 合計範囲と条件範囲の行数・位置が揃っているか
- 日付セルがシリアル値か、文字列かを確認する
- 時刻情報が含まれていないかを確認する
- 条件式の演算子と日付の書き方が正しいかを確認する
- 実際に条件に合致するデータ行が存在するかをフィルターで確認する
これらを上から順にチェックしていけば、原因の大枠はかなりの確率で特定できます。
特に、実際に条件に合致する行があるかどうかをオートフィルターで確認するステップは重要です。
SUMIFSが0だからといって、必ずしも関数の問題とは限らず、そもそもデータが存在していないパターンもあるためです。
一時的にSUMIFSをSUMIFやCOUNTIFSに置き換えて検証する
複数条件が絡むと、どの条件で絞り込まれているのかが分かりにくくなります。
そのような場合は、一時的にSUMIFSを簡略化して、一つの条件だけを残して検証する手順が有効です。
例えば、日付条件だけを残して他の条件範囲と条件を削除し、SUMIFやCOUNTIFSに置き換えてみます。
日付条件だけで正しい件数や合計が出るかどうかを確認すれば、問題が日付にあるのか、それ以外の条件にあるのかを切り分けられます。
また、COUNTIFSを使えば、条件に一致する行数を簡単に確認できます。
0件であれば条件のどこかが合っていない、1件以上であれば、別の条件か範囲指定に問題があるという具合に、徐々に絞り込んでいくイメージです。
このような段階的な検証プロセスを習得しておくと、複雑な集計ロジックでも自信を持って運用できるようになります。
エラーを未然に防ぐためのデータ入力ルールとテンプレート化
原因が分かっても、毎回同じ問題が起きていては効率が上がりません。
そこで重要なのが、そもそもトラブルを起こしにくい表の設計と入力ルールを整えることです。
具体的には、日付入力用の列に対してデータの入力規則を設定し、日付以外を受け付けないようにしたり、外部から取り込んだデータを変換するための列をあらかじめ用意したテンプレートを作っておく方法があります。
また、日付列の書式を統一しておくことで、途中から別の形式のデータが混ざるリスクを減らせます。
部署全体で共通テンプレートを運用できれば、誰が作業しても同じルールが適用されるため、後からSUMIFSを追加しても安定して動作させやすくなります。
一度だけ手間をかけて仕組みを整えてしまえば、その後の集計作業が格段にスムーズになります。
まとめ
SUMIFSで日付条件を指定したのに結果が0になってしまう原因の多くは、関数そのものではなく、日付の型や時刻情報、条件式の書き方にあります。
文字列日付、時刻付きデータ、範囲指定のミスなど、典型的なパターンを知っておけば、トラブルが起きても落ち着いて原因を切り分けられます。
特に、シリアル値としての日付の考え方や、DATE関数・EDATE関数を使った安全な日付指定は、日付を扱うすべての集計作業の土台となる知識です。
記事内で紹介したチェックリストやひな形の式を、自分のシートに合わせてカスタマイズし、テンプレートとして保存しておくと、今後の作業効率が大きく向上します。
SUMIFSが0になるたびに悩むのではなく、なぜそうなるのかを理解しておくことで、似たような問題にも応用して対応できるようになります。
ぜひ本記事の内容を参考に、日付条件付きSUMIFSを安心して使いこなして下さい。
コメント