Googleスプレッドシートには、配列に対して順番に処理を行い、最後にひとつの結果だけを返す関数があります。
それが今回ご紹介する REDUCE関数 です。
「ただの合計ではなく、条件付きで集計したい」
「文字列を並べてひとつの文にしたい」
「累積割引など、前の結果を引き継ぎながら最終値を出したい」
そんなときに活躍してくれるのが REDUCE関数。
この記事では、REDUCE関数の基本から、売上合計・文字の連結・割引シミュレーションなど、事務作業や実務で役立つ活用例を交えてやさしく解説していきます。
REDUCE関数ってどんな関数?
まずは基本の構文と使い方を見ていきましょう。
REDUCE関数の構文
=REDUCE(初期値, 配列, LAMBDA(累積値, 現在の値, 処理内容))
引数 | 説明 |
---|---|
初期値 | 最初の値(数値・文字列など) |
配列 | 処理したい範囲(例:B2:B10) |
LAMBDA関数 | 累積値 と現在の値 を使ってどう処理するかを書く |
SCAN関数
と違って、REDUCE関数は「最後の結果だけ」を返すのが特徴です。
REDUCE関数の出力のイメージ
たとえば、A列に以下のデータがあるとします。
A列 |
---|
1 |
2 |
3 |
4 |
このとき、次の数式を使うと
=REDUCE(0, A2:A5, LAMBDA(合計, 数値, 合計 + 数値))
出力結果は 10
になります。

活用例①|売上の合計を出す
基本的な合計も、REDUCEを使えば柔軟な条件付き集計が可能です。
データ例
日付 | 売上 |
---|---|
6/1 | 500 |
6/2 | 800 |
6/3 | 1200 |
6/4 | 1000 |
通常の合計
=REDUCE(0, B2:B5, LAMBDA(合計, 金額, 合計 + 金額))
→ 3,500 が返ってきます。

条件付き合計(1000円以上のみ)
=REDUCE(0, B2:B5, LAMBDA(合計, 金額, IF(金額 >= 1000, 合計 + 金額, 合計)))
→ 2,200(1200 + 1000)

✅
SUMIFS
のような使い方もできて、条件が複雑なときに便利です!
活用例②|累積割引の最終価格を求める
REDUCE関数の強みは「前の結果を引き継いで処理できる」こと。
たとえば、以下のように複数の割引率(%)があって、順番に割引を適用した最終価格を出したいとします。
データ例
商品名 | 割引率(%) |
---|---|
A商品 | 10 |
B商品 | 20 |
C商品 | 5 |
初期価格が 10,000円 の場合に、10%→20%→5% の順に割引をかけていくと…
数式
=REDUCE(10000, B2:B4, LAMBDA(価格, 割引率, 価格 * (1 - 割引率 / 100)))
→ 6,840円

✅ このように、「前の値に現在の処理を適用し続ける」計算は、REDUCEでしかできません!
活用例③|名前をカンマで連結する
各セルに名前が入っていて、1つのセルにまとめたいときに使えます。
A列 |
---|
田中 |
佐藤 |
鈴木 |
高橋 |
数式
=REDUCE("", A2:A5, LAMBDA(結果, 名前, IF(結果 = "", 名前, 結果 & ", " & 名前)))
→ 田中, 佐藤, 鈴木, 高橋

✅
TEXTJOIN
のように使えますが、途中で条件を入れたり整形したいときに便利!
活用例④|遅刻回数のカウント
「9:00より遅れて出勤した日」を数えたい場合。
日付 | 出勤時刻 |
---|---|
6/1 | 8:55 |
6/2 | 9:10 |
6/3 | 9:05 |
6/4 | 8:45 |
数式
=REDUCE(0, B2:B5, LAMBDA(遅刻数, 時刻, IF(時刻 > TIME(9, 0, 0), 遅刻数 + 1, 遅刻数)))
→ 2回の遅刻

✅ COUNTIFSより柔軟にロジックを組めるので、集計条件が複雑なときに役立ちます。
REDUCEとSCANの違い
関数 | 出力内容 | 用途 |
---|---|---|
REDUCE | 最終結果のみ | 合計・件数・割引計算・文字連結など |
SCAN | 処理の途中経過すべて | 累積集計・残高の推移・グラフなど |
🔁 同じLAMBDAでも、REDUCEは「最後だけ」、SCANは「すべて」出力。
REDUCE関数のコツと注意点
✅ ポイント | ⚠ 注意点 |
---|---|
IFや演算を自由に組み合わせられる | 初期値はデータの型(数値・文字など)に合わせる |
結果を1つにまとめたいときに最適 | LAMBDAは引数2つ必要(累積値, 現在の値) |
途中の処理を見たい場合はSCANを活用 | 配列の空白・型違いがエラーの原因になることも |
まとめ
REDUCE関数は、Googleスプレッドシートで配列を順番に処理し、最終的な1つの結果を返す関数です。
今回ご紹介したように、
- 売上の合計(条件付きもOK)
- 割引の累積計算
- 名前の文字連結
- 遅刻や条件件数のカウント
など、実務の中でも“ちょっと工夫したい処理”に最適です。
LAMBDA関数との組み合わせで、IFや演算を自由にカスタマイズできるのが最大の特徴。
「集計や加工の条件がちょっと複雑になってきたな…」
そんなときは、REDUCE関数をぜひ使ってみてくださいね。
関連記事(あわせて読みたい)
- SCAN関数の使い方|前の結果を引き継いで累積計算!売上・在庫・進捗に使える便利関数
- MAP関数の使い方|1行ずつまとめて処理!スプレッドシートで使える配列関数
- LAMBDA関数の使い方|MAPやBYROWとの組み合わせ活用例も紹介