REDUCE 関数

Excel 365, Excel 2021

概要

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