REDUCE会遍历数组,但只返回最终累积结果。它适合普通SUM难以表达的条件拼接、逐项折算和自定义汇总;如果需要看到每一步中间值,则应使用SCAN而不是REDUCE。

先判断是否真的需要REDUCE

任务特征合适方法
只对数字直接求和SUM最清楚,计算速度和维护成本都更低。
每个元素要经过不同规则再累加REDUCE配合LAMBDA可以集中表达规则。
要返回每一行的累计余额使用SCAN保留中间结果。
需要筛选后再聚合可先FILTER得到目标数组,再交给REDUCE。

写出可核对的REDUCE公式

  1. 准备最小测试数组

    先用5个已知值建立手算结果,避免直接在整列上调试复杂LAMBDA。

  2. 确定初始值

    数值累计通常从0开始,文本拼接可从空字符串开始;初始值会参与第一轮计算。

  3. 命名两个参数

    用total表示累加结果、item表示当前元素,返回下一轮需要继续使用的新total。

  4. 加入边界处理

    明确空白、文本、错误值和负数如何处理,再与独立手算结果比较。

按不同折扣汇总订单金额

金额数组为100、200、150,状态数组分别为正常、退货、正常。REDUCE每轮按状态决定加金额还是减金额,最终得到50。若规则只是状态求和,SUMIFS更直观;REDUCE适合规则需要逐项判断且数组已在公式中生成的场景。

文本拼接时还要处理第一个分隔符。可让累加器为空时直接返回当前项,非空时再添加顿号;否则结果会从一个多余分隔符开始。

公式交付前检查

  • 初始值改变后,结果变化是否符合定义。
  • 空数组、单元素数组和含错误值数组都有预期结果。
  • 公式没有对整列进行不必要的复杂遍历。
  • 最终结果与简单样本的手算值完全一致。

REDUCE的价值是把数组归并规则写成一个明确过程,不是替代所有求和函数。能用普通聚合清楚表达时保持简单,只有逐项规则真正不同才使用它。

每个元素需要返回一组对应结果时使用Excel MAP函数批量计算数组:配合LAMBDA处理每一行数据;需要保留所有累计过程时则查看Excel SCAN函数计算累计值:逐行生成余额、库存和完成率,三者的输出形状不同。