クイックナビゲーション
REDUCE 関数
概要
REDUCE 関数は配列の各値に LAMBDA 関数を適用し、アキュムレーターに累積値を計算することで配列を単一の結果に還元します。配列処理を効率化し、カスタム集計を可能にする高度な動的配列関数です。
構文
=REDUCE([initial_value], array, LAMBDA(accumulator, value, body))
パラメータ
| パラメータ | タイプ | 必須 | 説明 |
|---|---|---|---|
| initial_value | Any |
いいえ | アキュムレーターの開始値。省略時は配列の最初の要素を使用。 |
| array | Array |
はい | 還元する対象の配列。範囲や動的配列も使用可能。 |
| lambda | Lambda |
はい | LAMBDA関数。accumulator(累積値)、value(現在の値)、body(処理内容)の順。 |
REDUCE関数の使用
REDUCE関数は配列を単一値に変換する際に使用します。SUMやPRODUCTのような基本集計を超えたカスタム処理をLAMBDAで定義し、配列全体を効率的に処理。条件付き集計や連続計算に最適です。
REDUCEの一般的な例
配列の2乗和を計算
=REDUCE(, A1:A5, LAMBDA(a,b,a+b^2))
配列A1:A5の各値を2乗し、累積和を計算。initial_value省略時は最初の要素から開始。
条件付き乗算(PRODUCTIF相当)
=REDUCE(1,Table1[nums],LAMBDA(a,b,IF(b>50,a*b,a)))
50超の値のみ乗算するカスタムPRODUCTIF関数。初期値1で乗算開始。
偶数値のみカウント
=REDUCE(0,B1:B10,LAMBDA(a,n,IF(MOD(n,2)=0,a+1,a)))
配列内の偶数要素のみをカウント。初期値0から開始。
よくある質問
配列の最初の要素がアキュムレーターの初期値となり、2番目の要素から処理が開始されます。
必ず3個(accumulator, value, body)が必要です。不足すると#VALUE!エラーになります。
セル範囲、動的配列、テーブル列、MAKEARRAYなどで作成した配列が使用可能です。
一般的なエラーと解決策
#VALUE! エラー
Cause: LAMBDA関数に誤ったパラメーター数指定
Solution: LAMBDA(accumulator, value, body)の3パラメーターを正確に記述
#NAME? エラー
Cause: LAMBDA関数が認識されない
Solution: Excel 365/2021で使用。LAMBDAヘルパー関数も確認
予期しない結果
Cause: initial_valueの設定ミス
Solution: 乗算時は1、加算時は0、カウント時は0を設定
注記
- LAMBDA関数とセットで使用
- 配列の向き(行/列)は自動調整
- 空配列ではinitial_valueのみ返却
- 再帰処理には向かない
互換性
利用可能: Excel 365, Excel 2021
利用不可: Excel 2019, Excel 2016, Excel 2013, Excel 2010, Excel 2007, Excel 2003
コンテンツ最終レビュー: December 9, 2025
更新頻度: 必要に応じて
テスト済みExcelバージョン: Excel 365, Excel 2021