累計を求める数式あれこれ
累計を求める数式は書き方がいくつもあります。
これが定番、これが最適解の数式・・・とはなかなか言えません。
どれも一長一短なところがあります。
数式の目的は簡単ですので、どれを使っても良いと思います。
使用場所と好みで使い分けてください。
ページ内目次
例題サンプル
日付 | 数量 |
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まで出力されます。
同じテーマ「エクセル関数応用」の記事
新着記事NEW ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.ブック・シートの選択(Select,Activate)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。