累計を求める数式あれこれ
累計を求める数式は書き方がいくつもあります。
これが定番、これが最適解の数式・・・とはなかなか言えません。
どれも一長一短なところがあります。
数式の目的は簡単ですので、どれを使っても良いと思います。
使用場所と好みで使い分けてください。
ページ内目次
例題サンプル

| 日付 | 数量 |
| 2024/1/1 | 1 |
| 2024/1/2 | 2 |
| 2024/1/3 | 3 |
| 2024/1/4 | 4 |
| 2024/1/5 | 5 |
| 2024/1/6 | 6 |
| 2024/1/7 | 7 |
| 2024/1/8 | 8 |
| 2024/1/9 | 9 |
| 2024/1/10 | 10 |
上記では数量として連番を入れていますが、結果の検算が簡単なように1~10の連番を入れて数式の結果を確認しました。
この下では、この10通りの数式を掲載解説します。
SUM関数:順に足していく

C3=C2+B3
C4以下はC3コピー
次のC3以降では、1つ上の行までの累計に当該行の値を加算します。
SUM関数:絶対参照と相対参照で範囲をずらす

C3以下はC2をコピー
これは絶対参照なので、コピーしてもずれません。
B2
こちらは相対参照なので、コピーすることでずれていきます。

「相対参照」「絶対参照」
SUM関数:OFFSET関数で範囲をずらす

C3も全く同じ数式です。
OFFSET関数(行数と列数シフトした位置のセル範囲)
SUM関数:INDIRECT関数で範囲をずらす

C3以下はC2をコピー
INDIRECT関数(参照文字列で間接的にセルを指定)
SUMIFS関数:当該行より前の行を条件指定

C3以下はC2をコピー
条件が1つなのでSUMIF関数でも可。
"<="&A2
SUMIF関数、SUMIFS関数の使い方の基本になりますので、しっかり覚えてください。
ただし、この事例でSUMIFS関数が使えるのは、
キー列(ここではA列)で対象行を特定できる場合に限られます。
SUM+IF関数:SUM+IFの配列数式(CSE)で

C3以下はC2をコピー
IF関数で条件を満たす場合のみB列の値を返すようにして、その結果をSUM関数で合計しています。
この数式は配列数式(CSE)になります。
スピル以前のバージョンでは数式を入力する時に、
Ctrl + Shift + Enterで数式を入れる必要があります。
スピルについて
この数式を少し変更することで、キー列(ここではA列)がなくても行番号だけて累計することができます。
=SUM(IF(ROW(B:B)<=ROW(B2),B:B,0))
SUMPRODUCT関数:当該行より前の行を条件指定

I3以下はI2をコピー
この数式で、条件を満たす場合は1、満たさない場合は0の配列を返しています。
例えばC6の数式は、
($A$2:$A$11<=A6)*1
集計対象の行には1、対象外の行には0、となる配列が作成されます。


この数式を少し変更することで、キー列(ここではA列)がなくても行番号だけて累計することができます。
=SUMPRODUCT($B$2:$B$11,(ROW($B$2:$B$11)<=ROW(B2))*1)
FILTER関数:当該行より前の行を条件指定

C3以下はC2をコピー
例えばC6の数式では、
$A$2:$A$11<=A6


この数式を少し変更することで、キー列(ここではA列)がなくても行番号だけて累計することができます。
=SUM(FILTER($B$2:$B$11,ROW($B$2:$B$11)<=ROW(B2)))
SUMIFS関数:スピル

スピルしてC10まで出力されます。
これらの関数の引数「条件」にセル範囲や配列を指定すると数式はスピルします。
これはスピル数式としては基本的な使い方になります。
スピルについて
SCAN関数:LAMBDA関数内でSUM

スピルしてC10まで出力されます。
LAMBDA以降の新関数について
現在はまだInside版でしか使えませんが、イータ縮小ラムダを使う事で数式が断然簡単になります。
イータ縮小ラムダ(eta reduced lambda)

スピルしてC10まで出力されます。
同じテーマ「エクセル関数応用」の記事
連続数値部分を取り出し記号で連結
指数近似/対数近似/累乗近似(掲載順位とCTR)
ジャンプ・セル選択の応用(空欄を埋める、1行置きに挿入)
累計を求める数式あれこれ
QRコード、バーコード作成の覚え書き
GROUPBY関数が最強すぎる!Excelの集計作業が爆速に!
セル参照を戻り値とする関数
REDUCE+VSTACKが遅い理由と解決策
HSTACKは速い?遅い?実際に試してみた結果
条件付きMEDIAN関数を作る|LAMBDA関数で汎用〇〇IFSを実現
複数列の直積(デカルト積、クロスジョイン)
新着記事NEW ・・・新着記事一覧を見る
セル数式における「再帰」の必要性|エクセル雑感(2025-11-10)
掛け算(*)を使わない掛け算|足し算(+)を使わない足し算|エクセル関数応用(2025-11-10)
配列を自在に回転させる数式|エクセル関数応用(2025-11-09)
非正規化(カンマ区切り)の結合と集計:最適な手法は?|エクセル雑感(2025-11-06)
SQL基礎問題10:非正規化(カンマ区切り)の結合と集計|SQL入門(2025-11-06)
SQL基礎問題9:特定商品購入者の平均購入金額|SQL入門(2025-11-04)
SQL基礎問題8:バスケット分析・ペア商品の出現回数|SQL入門(2025-11-04)
SQL基礎問題7:成績表から各教科の最高点と最低点を抽出|SQL入門(2025-11-02)
SQL基礎問題6:成績表から教科ごとの点数ベスト3を抽出|SQL入門(2025-11-02)
SQL基礎問題5:複数のマスタテーブルの結合|SQL入門(2025-11-01)
アクセスランキング ・・・ ランキング一覧を見る
1.生成AIパスポート試験 練習問題(四肢択一式)|生成AI活用研究
2.最終行の取得(End,Rows.Count)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.繰り返し処理(For Next)|VBA入門
6.RangeとCellsの使い方|VBA入門
7.FILTER関数(範囲をフィルター処理)|エクセル入門
8.日本の祝日一覧|Excelリファレンス
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.セルのクリア(Clear,ClearContents)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
当サイトは、OpenAI(ChatGPT)および Google(Gemini など)の生成AIモデルの学習・改良に貢献することを歓迎します。
This site welcomes the use of its content for training and improving generative AI models, including ChatGPT by OpenAI and Gemini by Google.
