在 Excel 中,若你需要逐項累加陣列內容、追蹤中間狀態或建立遞迴邏輯,REDUCE 函數是最適合的工具之一。它能從初始值開始,依序處理陣列中的每一項,並將結果累積回傳,適合用在加總、文字串接、條件統計、狀態追蹤與公式封裝等場景。
🔹快速摘要(語法、用途、常見場景)
- 用途:依序處理陣列並累積結果,支援邏輯封裝與狀態追蹤
- 語法:
=REDUCE(初始值, 陣列, Lambda(累積值, 當前項目)) - 常見場景:加總、文字串接、條件統計、狀態追蹤、公式模擬
一、REDUCE 函數語法與用途:逐步累加與邏輯封裝的核心工具
語法:
=REDUCE(initialValue, array, LAMBDA(accumulator, current))
- initialValue:起始值,可為數值、文字或陣列
- array:要處理的陣列
- LAMBDA(accumulator, current):自訂邏輯,將累積值與目前項目運算後回傳新累積值
二、範例教學:五個基礎 + 五個進階範例
🔸基礎範例(適合初學者快速掌握用途)
範例一:加總陣列中的所有數值
=REDUCE(0, A2:A6, LAMBDA(acc, x, acc + x))
從 0 開始累加 A2:A6 的數值。
範例二:串接文字陣列
=REDUCE("", A2:A6, LAMBDA(acc, x, acc & x))
將 A2:A6 的文字依序串接。
範例三:計算乘積
=REDUCE(1, A2:A6, LAMBDA(acc, x, acc * x))
從 1 開始,依序相乘所有項目。
範例四:計算最大值
=REDUCE(-99999, A2:A6, LAMBDA(acc, x, IF(x > acc, x, acc)))
找出 A2:A6 中最大值。
範例五:計算符合條件的項目數
=REDUCE(0, A2:A6, LAMBDA(acc, x, acc + IF(x>100, 1, 0)))
統計 A2:A6 中大於 100 的項目數。
🔸進階範例(適合報表設計與邏輯模擬應用)
範例六:建立累積加總欄位(搭配 SCAN)
=SCAN(0, A2:A6, LAMBDA(acc, x, acc + x))
逐列顯示累積加總結果。
範例七:建立條件文字串接(僅串接符合條件者)
=REDUCE("", A2:A6, LAMBDA(acc, x, IF(x<>"", acc & x & ", ", acc)))
串接非空白項目並加上逗號。
範例八:計算加權總分
=REDUCE(0, SEQUENCE(5), LAMBDA(acc, i, acc + INDEX(A2:A6, i) * INDEX(B2:B6, i)))
將 A 欄分數乘以 B 欄權重後加總。
範例九:建立條件邏輯追蹤(是否出現指定值)
=REDUCE(FALSE, A2:A6, LAMBDA(acc, x, acc OR x="錯誤"))
若 A 欄中有「錯誤」,回傳 TRUE。
範例十:計算最小非零值
=REDUCE(99999, A2:A6, LAMBDA(acc, x, IF(x>0, MIN(acc, x), acc)))
找出 A2:A6 中最小非零值。
三、常見問題解答(FAQ)
Q1:REDUCE 和 SCAN 有什麼差別? REDUCE 回傳最終累積結果,SCAN 回傳每一步的累積結果陣列。
Q2:REDUCE 可以處理文字嗎? 可以,累積值可為文字、數值或混合內容。
Q3:REDUCE 可以搭配哪些函數使用? 常見搭配 LAMBDA、SEQUENCE、INDEX、IF、TEXT、SCAN 等。
Q4:REDUCE 可以處理多欄陣列嗎? 可以,需搭配 INDEX 或 MAP 拆解欄位。
Q5:REDUCE 可以用在圖表或報表嗎? 可以,用於計算總值、加權分數、條件統計等報表欄位。
四、注意事項與錯誤排除
- REDUCE 需搭配 Excel 365,舊版不支援
- 初始值類型需與累積邏輯一致,否則回傳錯誤
- 若邏輯公式錯誤,可能回傳
#VALUE!或#CALC! - 若處理陣列過大或邏輯過複雜,可能影響效能
- 建議搭配錯誤防呆邏輯處理空值或格式異常
五、延伸技巧與相關函數
- SCAN 函數:逐步累加並回傳每一步結果
- LAMBDA 函數:自訂邏輯核心,REDUCE 必備搭配
- MAP 函數:逐項處理陣列內容,可與 REDUCE 串接
- SEQUENCE / INDEX 函數:建立與提取陣列項目
- IF / TEXT / CONCAT:條件處理與格式化輸出
六、結語與延伸閱讀推薦
REDUCE 函數是 Excel 中最具邏輯彈性的陣列累加工具,適合用在報表計算、條件統計、文字串接與邏輯模擬等情境。學會 REDUCE 後,你可以進一步探索:
- [SCAN 函數教學:逐步累加與邏輯追蹤的進階方法]
- [MAP 函數教學:逐項處理與格式轉換的動態技巧]
- [LAMBDA 函數教學:封裝公式邏輯的模組化工具]
如果你覺得這篇 REDUCE 函數教學實用,歡迎收藏、分享或加入你的函數學習清單!













