🎯 結論: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 の違い(ここで理解が一気に深まります)

目的SCANREDUCE
累積結果を全部返す×
最終結果だけ返す
時系列の推移
集計の最終値

SCAN:途中経過を全部返す REDUCE:最終結果だけ返す

この違いだけ覚えれば完璧です。

7. まとめ:REDUCEは“最終結果だけ欲しいときの最強ツール”

  • 配列を順に処理して最終値だけ返す
  • 売上・在庫・進捗などの集計に最適
  • FILTER・SORT と組み合わせると強力
  • SCAN と使い分けると完璧
  • 最新 Excel の配列関数の代表格

Excel で時系列データや集計を扱うなら、 REDUCE関数は必ず覚えておきたい関数です。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です