REDUCE関数で累計(ランニングトータル)を計算する方法は?
結論
REDUCE関数で累計を計算できますが、累計配列を作るにはSCAN関数の方が適しています。
詳しい解説
REDUCE関数を使うと、配列を反復処理しながら累積的な計算を行えます。累計を計算するには `=SCAN(0, B2:B100, LAMBDA(合計, 値, 合計+値))` のようにSCAN関数を使う方が簡単ですが、REDUCEでも `=REDUCE(0, B2:B100, LAMBDA(累計配列, 値, VSTACK(累計配列, SUM(累計配列)+値)))` のように実現できます。初期値を0とし、各要素を順次加算しながら配列を構築します。REDUCEは単一の結果を返すため、累計の配列を作るにはVSTACKなどと組み合わせる必要があります。
執筆・検証:田中 けんた|Excel歴15年・MOS資格保持
バージョン対応
| Excel 2016 | Excel 2019 | Excel 2021 | Excel 2024 | Microsoft 365 |
|---|---|---|---|---|
| REDUCE/SCAN関数は未対応 | REDUCE/SCAN関数は未対応 | REDUCE/SCAN関数は未対応 | SCAN対応・REDUCEは365のみ | 対応 |
実務での使用例
売上累計の計算(SCAN使用)
月次売上の累計を計算
=SCAN(0, B2:B13, LAMBDA(累計, 売上, 累計+売上))- B列に月次売上が入力されている場合
- SCAN関数で各月の累計を計算
- 結果が縦に並んだ累計配列として出力される
合計値の計算(REDUCE使用)
配列の合計値を1つの値として取得
=REDUCE(0, B2:B100, LAMBDA(合計, 値, 合計+値))