Excelで日付ごとの合計が合わないとき|時刻付きデータをSUMIFSで集計する

日付ごとの合計が0になったり、一部の明細しか足されなかったりするときは、日時の列に「時刻」が含まれていないか確認します。セルに同じ日付が表示されていても、午前0時と午前9時の値は同じではありません。

数値として保存された日時から1日分を集計するなら、「その日の0時以上、翌日の0時未満」の2条件を使います。 元表の時刻を消す必要はありません。

たとえば、A2:A9が日時、C2:C9が金額、F2が集計したい日の日付なら、合計の式は次のようになります。

=SUMIFS($C$2:$C$9,$A$2:$A$9,">="&$F2,$A$2:$A$9,"<"&($F2+1))

F2は時刻を含まない数値の日付にします。以下では、架空の明細を使い、式の作り方と合計・件数の確認まで説明します。実際の売上や勤務記録を使った例ではありません。 この架空の8明細は、Windows版ExcelでSUMIFS・COUNTIFSの計算結果と保存後の読み戻しを確認しました。

同じ日付に見えても、時刻付きの値は完全一致しない

Excelは日付を連続した数値として、時刻を1日の小数部分として扱います。正午は1日の半分です。同じ日の0時と正午には、数値として0.5の違いがあります。MicrosoftのTIME関数の説明と日付システムの説明で、この扱いを確認できます。

たとえば「2026/10/7 09:15」の表示形式を日付だけにしても、保存された09:15の部分は残ります。

日付セルと完全一致する行だけを探す次の式では、その日の0時の明細しか対象になりません。

=SUMIF($A$2:$A$9,F3,$C$2:$C$9)

この後の例でF3を2026/10/7にすると、完全一致の合計は100です。午前0時の明細がなければ0になることもあります。表示形式を日付だけに変える方法では、この条件の問題は解消しません。

まず、日時・金額・集計日が数値か確認する

元データを上書きする前に、表のコピーで確認します。空いているセルに次の式を入力すると、対象セルが数値かどうかを調べられます。

確認するもの 確認式 この例で必要な状態
日時の先頭セル =ISNUMBER(A2) TRUE
金額の先頭セル =ISNUMBER(C2) TRUE
集計日のセル =ISNUMBER(F2) TRUE
集計日の時刻部分 =MOD(F2,1) 0

先頭セルだけで列全体を確認したことにはなりません。合計に入らない行や、取り込み元が違う行についても同じ確認をします。型の確認はISNUMBERなどの公式説明、時刻部分の確認はMOD関数の公式説明も参照できます。

日付らしく表示されていてもISNUMBERがFALSEなら、今回の式へ進む前にデータ型を確認してください。文字列の日付を日付に直す手順で確認できます。元の日時が必要な場合は、変換結果に時刻まで残っているかも確かめます。

F2に時刻が残っていると、集計区間もその時刻から翌日の同時刻までずれます。日付だけを確実に用意するには、次のようにDATE関数で指定します。

=DATE(2026,10,7)

架空の8明細で、対象になる行を確認する

新しいシートのA1:C9を、次の表に合わせて用意します。A列は日時、B列は明細ID、C列は金額です。金額の0とマイナスも、例の値として入力します。

Excelの行 A:日時 B:明細ID C:金額
2 2026/10/6 23:59:59 M01 900
3 2026/10/7 00:00:00 M02 100
4 2026/10/7 09:15:00 M03 1200
5 2026/10/7 12:00:00 M04 0
6 2026/10/7 18:30:00 M05 -200
7 2026/10/7 23:59:59 M06 600
8 2026/10/8 00:00:00 M07 3000
9 2026/10/8 09:00:00 M08 800

日時の入力が文字列になる場合は、次の式をA2からA9へ順に入力すると、日付と時刻の数値を用意できます。これは入力用の式で、実際の元データを一律に書き換える指示ではありません。

=DATE(2026,10,6)+TIME(23,59,59)
=DATE(2026,10,7)
=DATE(2026,10,7)+TIME(9,15,0)
=DATE(2026,10,7)+TIME(12,0,0)
=DATE(2026,10,7)+TIME(18,30,0)
=DATE(2026,10,7)+TIME(23,59,59)
=DATE(2026,10,8)
=DATE(2026,10,8)+TIME(9,0,0)

A2:A9の表示形式をyyyy/m/d hh:mm:ssにすると、時刻まで確認しやすくなります。F列には日付だけを表示します。

2026/10/7の対象はM02〜M06の5明細です。前日のM01と、翌日0時のM07は対象外です。足す金額は100+1200+0-200+600で、合計は1700になります。

SUMIFSで「当日以上、翌日未満」を指定する

F1:H4に日別の集計表を作ります。F2〜F4には、それぞれ次の日付の式を入力します。

セル 入力する式
F2 =DATE(2026,10,6)
F3 =DATE(2026,10,7)
F4 =DATE(2026,10,8)

F1を「集計日」、G1を「合計」、H1を「件数」にします。G2に次の式を入力し、G4までコピーします。

=SUMIFS($C$2:$C$9,$A$2:$A$9,">="&$F2,$A$2:$A$9,"<"&($F2+1))

式では、同じ日時の範囲に2つの条件を設定しています。

式の部分 意味
$C$2:$C$9 足す金額の範囲
$A$2:$A$9,">="&$F2 集計日の0時以降
$A$2:$A$9,"<"&($F2+1) 翌日の0時より前

&は比較記号と日付セルの値をつなぐために使います。翌日を含めないため、上限は<=ではなく<です。合計する範囲と条件の範囲は、同じ行数にします。MicrosoftのSUMIFSの構文・注意点も参照できます。

「23:59:59以下」のように終端の時刻を決め打ちすると、秒より細かい時刻を持つデータを取りこぼす可能性があります。翌日0時を上限にして含めない形なら、翌日の最初の明細を混ぜずに、その手前の日時を対象にできます。

COUNTIFSの件数と明細IDでも確かめる

H2に次の式を入力し、H4までコピーします。SUMIFSと同じ日時条件で、明細の数を数えます。

=COUNTIFS($A$2:$A$9,">="&$F2,$A$2:$A$9,"<"&($F2+1))

COUNTIFSはすべての条件を満たす行の件数を数えます。MicrosoftのCOUNTIFSの説明で構文を確認できます。この式は金額の合計ではなく、日時が区間に入る明細の件数です。金額0のM04も1件に含まれます。

この例の期待結果は次のとおりです。

集計日 合計 件数 対象の明細ID
2026/10/6 900 1 M01
2026/10/7 1700 5 M02〜M06
2026/10/8 3800 2 M07・M08
3日分 6400 8 M01〜M08

自分の表でも、最初は1日だけ選び、対象の明細IDと手計算を照合します。全件が今回の3日間に入り、日時と金額が数値であるこの例では、日別合計の和は元表の=SUM(C2:C9)とも一致します。実データに範囲外の日付・空欄・未確認の型がある場合、この一致だけで正しいとは判断しません。

まだ結果が合わないときの切り分け

状態 次に確認すること
件数も合計も0 集計日と元日時が数値か、集計日が対象期間にあるか、F列に時刻が残っていないか
件数は合うが合計が違う 対象明細の金額が数値か、空欄/文字列/エラーがないか、0やマイナスが実際の値か
翌日0時の明細が入る 上限条件を"<"&($F2+1)にしているか
追加した明細だけ入らない 式の範囲が追加行まで届いているか
一部の日だけずれる 元データの日時の基準と、集計したい日の基準が同じか

件数があって合計0になる場合も、金額0やプラスとマイナスの相殺なら正常です。「合計0だから式が壊れている」と決めず、対象の明細を確認します。また、件数が合っても金額の型や対象IDが正しいとは限りません。

明細を継続して追加する表なら、範囲管理も別に必要です。行を追加しても集計から漏らさないテーブルと構造化参照の使い方を確認してください。今回の固定範囲の式は、10行目以降を自動で含める式ではありません。

外部システムからUTCの日時を取り込んでいるのに、日本時間の日付で集計したい場合は、まず日時の基準をそろえる必要があります。今回の8明細は、すべて同じ基準の日時として用意した架空例です。式を入れただけでタイムゾーンが変換されるわけではありません。

自分の表では、境界の3行と対象件数から確認する

最初に確かめるのは、前日の最後、当日の0時、翌日の0時です。当日の0時は含め、翌日の0時は含めないことを確認します。

次に、当日の明細ID、件数、金額の手計算を照合します。この1日が合ってから、ほかの日へ式をコピーします。元表の時刻は残したまま、集計する日と2つの条件を分ければ、明細を追って確認できる日別集計になります。

タイトルとURLをコピーしました