🎯 結論:REDUCEは「累積処理の最終結果だけ欲しいとき」に使う“実務向けの神関数”です
Excelで仕事をしていると、こんなことを思ったことはありませんか。
- 「売上の累計が欲しいけど、途中経過はいらない…」
- 「在庫の最終残量だけ知りたい…」
- 「点数の合計だけ出したい…」
- 「SCAN は便利だけど、全部返されても困るときがある…」
私もサラリーマン戦士として Excel と毎日向き合ってきましたが、 「最終結果だけ欲しい集計」 って意外と多いんですよね。
そんなときに圧倒的に便利なのが REDUCE(リデュース)関数 です。
SCAN が「途中経過を全部返す」のに対し、 REDUCE は 最終結果だけ返す。 この違いが、実務ではとんでもなく大きいのです。
1. REDUCE関数とは?(一言でいうと「最終結果だけ返す累積処理」)
REDUCE は、配列(範囲)を先頭から順に処理し、 最後に 1 つの結果だけ返す関数です。
コード
=REDUCE(初期値, 配列, LAMBDA(累積値, 現在値, 計算式))
- 初期値:累積のスタート値(0 が多い)
- 配列:処理したい範囲
- LAMBDA:累積処理の内容
- 第1引数:累積値(前回の結果)
- 第2引数:現在値(今回の値)
SCAN の兄弟関数で、 SCAN=途中経過を全部返す REDUCE=最終結果だけ返す という違いがあります。
SCAN の基礎は SCAN関数とは を参照ください。
2. REDUCEの基本例(まずはここだけ覚えればOKです)
■ 売上の合計(最終値だけ欲しい)
| 日付 | 売上 |
|---|---|
| 1日 | 10 |
| 2日 | 20 |
| 3日 | 30 |
コード
=REDUCE(0, B2:B4, LAMBDA(a, b, a + b))
→ 60
SCAN なら「10|30|60」と途中経過を返しますが、 REDUCE は 最終結果の 60 だけ返します。
■ 在庫の最終残量(入出庫管理)
| 日付 | 入庫(+)/出庫(-) |
|---|---|
| 1日 | +10 |
| 2日 | -3 |
| 3日 | +5 |
コード
=REDUCE(0, B2:B4, LAMBDA(a, b, a + b))
→ 12
サラリーマンの現場では、 「最終残量だけ知りたい」 という場面が本当に多いです。
3. REDUCEの応用(ここからが本番です)
REDUCE は足し算だけではありません。 LAMBDA の中身を変えるだけで、ほぼ何でも最終結果にまとめられます。
■ 文字列を連結して1つにまとめる
A列 A B C
コード
=REDUCE("", A2:A4, LAMBDA(a, b, a & b))
→ ABC
SCAN だと途中経過が返って邪魔ですが、 REDUCE なら最終結果だけ返るのでスッキリ。
■ REDUCE × TEXTSPLIT(分割した要素をまとめる)
コード
=REDUCE("", TEXTSPLIT(A2, "-"), LAMBDA(a,b, a & "[" & b & "]"))
「A-123-XYZ」 → [A][123][XYZ]
TEXTSPLIT の基礎は TEXTSPLIT関数とは を参照ください。
■ REDUCE × FILTER(条件付き集計)
営業部だけの売上合計:
コード
=REDUCE(0, FILTER(B2:B100, A2:A100="営業"), LAMBDA(a,b, a+b))
FILTER → REDUCE の流れは鉄板です。
FILTERの基礎は FILTER関数とは を参照ください。
■ REDUCE × TAKE(最新◯件だけ集計)
直近7日間の売上合計:
コード
=REDUCE(0, TAKE(B2:B100, -7), LAMBDA(a,b, a+b))
最新データだけを対象にしたいときに便利です。
TAKEの基礎は TAKE関数とは を参照ください。
■ REDUCE × SORT(日付順に並べて最終値だけ取得)
コード
=REDUCE(0, SORT(B2:C100, 1, 1), LAMBDA(a,b, a + b))
SORT の基礎は SORT関数とは を参照ください。
4. サラリーマン視点で感じたREDUCEの強み
私が実務で REDUCE を使い始めて感じたのは、 「最終結果だけ欲しい集計が圧倒的に楽になる」 ということです。
特に次のような場面で威力を発揮します。
✔ 売上の最終累計だけ欲しいとき
SCAN だと途中経過が邪魔。 REDUCE なら最終値だけ返るので資料作成が楽。
✔ 在庫の最終残量を出したいとき
入庫・出庫の履歴を全部追わなくても、 REDUCE で一発。
✔ 条件付き集計をしたいとき
FILTER と組み合わせると、 「営業部だけ」「直近7日だけ」などが一瞬。
✔ 文字列の連結が必要なとき
TEXTSPLIT と組み合わせると、 複雑な文字列加工が自動化。
SCAN と REDUCE を使い分けることで、 「途中経過が欲しいとき」「最終結果だけ欲しいとき」 を完全にコントロールできます。
5. よくあるミスと注意点
❗ LAMBDA の引数は「累積値 → 現在値」の順
コード
LAMBDA(a, b, a + b)
順番を逆にすると意図した結果になりません。
❗ 初期値を忘れるとエラー
累積なら 0 を入れるのが基本です。
❗ SCAN と違い、途中経過は返さない
途中の値が欲しいなら SCAN を使います。
❗ FILTER と併用すると配列サイズが変わる
結果の長さが変わるため、参照先に注意。
6. REDUCE と SCAN の違い(ここで理解が一気に深まります)
| 目的 | SCAN | REDUCE |
|---|---|---|
| 累積結果を全部返す | ◎ | × |
| 最終結果だけ返す | △ | ◎ |
| 時系列の推移 | ◎ | △ |
| 集計の最終値 | △ | ◎ |
SCAN:途中経過を全部返す REDUCE:最終結果だけ返す
この違いだけ覚えれば完璧です。
7. まとめ:REDUCEは“最終結果だけ欲しいときの最強ツール”
- 配列を順に処理して最終値だけ返す
- 売上・在庫・進捗などの集計に最適
- FILTER・SORT と組み合わせると強力
- SCAN と使い分けると完璧
- 最新 Excel の配列関数の代表格
Excel で時系列データや集計を扱うなら、 REDUCE関数は必ず覚えておきたい関数です。
コメントを残す