概要
累積合計は「先頭行から現在行までの合計」を行ごとに計算していく集計です。定番の作り方は、SUMに“開始セルを絶対参照”+“現在行までを相対参照”で指定する方法です。これなら下方向にコピーするだけで、各行の累積値が自動で更新されます。
基本の使い方(SUM+行参照)
- 書式の考え方:
- 説明: 先頭の B2 を「絶対参照」で固定($B$2)、終点の B2 は「相対参照」でコピーに応じて B3、B4…と伸びる。
=SUM($B$2:B2)
手順(列Bの金額を列Cに累積):
1. C2に入力:
=SUM($B$2:B2)
2. C2を下へコピー: C3は =SUM($B$2:B3)、C4は =SUM($B$2:B4)…となり、各行の累積が完成。
- 別列の開始位置が違う場合:
=SUM($D$5:D5) // D5が開始行のとき
具体例
- 例1: 売上の累積合計(シンプル) 列B=売上、列C=累積
- ポイント: 先頭セル固定+終点は現在行で伸びる。
C2: =SUM($B$2:B2)
C3以降: 下へコピー
- 例2: 日付順に累積(開始〜現在行まで) 列A=日付、列B=金額、列C=累積
- ポイント: 並び順を“日付昇順”にしておくと、時系列の累積になります。
C2: =SUM($B$2:B2)
- 例3: テーブル(構造化参照)で累積 テーブル名「売上」、列「金額」「累積」
売上[累積]- ポイント: 先頭行から“その行(@)の金額セル”までをSUM。行追加にも自動対応。
売上[累積] 行の数式:
=SUM(INDEX(売上[金額],1):[@金額])
- 例4: カテゴリごとに累積 列A=カテゴリ、列B=金額、列C=カテゴリ別累積
- ポイント: 「現在行までの範囲」に絞ったSUMIF。カテゴリが変わるたびに累積が個別に進む。
C2: =SUMIF($A$2:A2, A2, $B$2:B2)
応用テンプレート
- 行の並びに依存しない“期間累積”(日付で条件) 列A=日付、列B=金額、列C=累積(A2の“その日まで”)
- 説明: 並べ替えても「A2の日付以下」の合計なので、結果が安定。
=SUMIFS($B$2:$B$200, $A$2:$A$200, "<=" & A2)
- 月単位の累積(同じ月かつ当日まで) 列A=日付、列B=金額、列C=累積
- 説明: 当月の1日〜当日までを合計。EOMONTHで月初・月末を作る。
=SUMIFS($B$2:$B$200, $A$2:$A$200, ">=" & EOMONTH(A2, -1)+1,
$A$2:$A$200, "<=" & A2)
- プロジェクト別+時系列の累積 列A=プロジェクト、列B=日付、列C=金額、列D=累積
- 説明: 同じプロジェクトで“B2の日付まで”の合計。
=SUMIFS($C$2:$C$200, $A$2:$A$200, A2, $B$2:$B$200, "<=" & B2)
- ヘッダー行が異なる位置の汎用形
=SUM(INDEX(対象列, 開始行):INDEX(対象列, ROW()))
例: 列Bの開始が行5なら
=SUM(INDEX($B:$B,5):B5)
作業効率のコツ
- 絶対参照を必ず固定:
- 例:
$B$2のように「$」で列と行を固定。コピー時のズレ防止。
- 例:
- オートフィルで一気に展開:
- 説明: 1行目の累積式を作ったら、データ最終行までドラッグでコピー。
- テーブル化で自動拡張:
- 説明: テーブルにしておくと、式が新行にも自動適用され、範囲のミスが減る。
- 意図した並び順にする:
- 説明: 累積は行順に依存する作り方が多い。時系列累積なら昇順ソートしてから式設定。
よくあるつまずきと対策
- 並べ替えで累積が変わってしまう
- 原因:
=SUM($B$2:B2)は「行順」に依存。 - 対策: 並びに左右されない累積は SUMIFSで日付やIDを条件にする(応用テンプレート参照)。
- 原因:
- 開始行がずれて誤計算
- 対策: 先頭セルの絶対参照を確認。見出しが1行なら開始は通常“2”。
- 空白や文字列混在で計算漏れ
- 対策: 数値列に統一。必要なら別列で
=VALUE()、または入力規則で制御。
- 対策: 数値列に統一。必要なら別列で
- テーブルで先頭行参照が分からない
- 対策:
INDEX(テーブル[列],1)を使うと確実に先頭を指せる。
- 対策:
例題(練習)
- 問題1: 列B=売上。列Cに“行ごとの累積合計”を作ってください。
- 解答例:
=SUM($B$2:B2)
- 問題2: 列A=カテゴリ、列B=金額。列Cに“カテゴリ別の累積合計”を作ってください。
- 解答例:
=SUMIF($A$2:A2, A2, $B$2:B2)
- 問題3: 列A=日付、列B=金額。列Cに“同日までの累積(並べ替えに強い)”を作ってください。
- 解答例:
=SUMIFS($B$2:$B$200, $A$2:$A$200, "<=" & A2)
- 問題4: テーブル「売上」で、列「金額」の累積を列「累積」に作ってください。
- 解答例:
=SUM(INDEX(売上[金額],1):[@金額])
- 問題5: 列A=プロジェクト、列B=日付、列C=金額。列Dに“プロジェクト別+当日までの累積”を作ってください。
- 解答例:
=SUMIFS($C$2:$C$200, $A$2:$A$200, A2, $B$2:$B$200, "<=" & B2)
まとめ
- 定番形:
=SUM($開始セル$:現在行セル)で開始を絶対参照、終点を相対参照に - 並び依存を避けるなら: 条件付きの
SUMIFSで「日付やID ≤ 現在行」を合計 - テーブルが便利:
INDEX(テーブル[列],1):[@列]で自動拡張・可読性アップ - 設計の肝: 開始位置の固定、並び順の明確化、データ型の統一
