成本与计价台账里大量需求是「多条件汇总」:按分部与月份求和、按分包单位与费用科目求和、按区间计数。这类需求不必上数据透视表,一个 SUMPRODUCT 就能在单元格内完成,而且公式随数据区自动更新。以下八个用法覆盖台账处理的日常场景。
用法一:单条件求和
语法骨架:=SUMPRODUCT((条件区域=条件)*求和区域)。例如按分包单位汇总进度款:=SUMPRODUCT((台账!B:B=分包单位)*台账!F:F)。与 SUMIF 相比,SUMPRODUCT 的条件写法更灵活,可以引用其他单元格作为条件,跨表也不会失效。
用法二:多条件求和
=SUMPRODUCT((A列=条件1)*(B列=条件2)*求和列)。例如「某分部+某月份」的人工费合计。条件之间用乘号连接,逻辑即「同时满足」。条件超过三个时公式可读性下降,建议把条件写成单元格引用(放在汇总表的表头),公式固定、只换条件值。
用法三:多条件计数
=SUMPRODUCT((A列=条件1)*(B列=条件2)),不乘求和列即是计数。典型应用:统计某分包当月签证单笔数、某分部超预算的清单项条数。
用法四:加权平均
综合单价的复核常用加权平均:=SUMPRODUCT(数量列,单价列)/SUM(数量列)。例如核对调差后的加权平均材料价,比简单平均更符合实际,因为量大价高的材料权重自然占优。注意两列必须是等长区域,且不包含文字单元格,否则会报错。
用法五:区间计数与分层统计
=SUMPRODUCT((数值列>=下限)*(数值列<上限))统计落入区间的条数,例如单价偏差率落在±5%以内的清单项数。多个区间并列时,把它放进统计表的行标题,每行引用不同上下限,一张偏差分布表就成型了。
用法六:条件乘积求和(金额分摊)
按比例分摊费用常用:=SUMPRODUCT(分摊基数列*比例列)。例如措施费按各分部人工费占比分摊到分部,先算出每分部比例,再乘分摊总额。相比手工算完再粘贴,公式版本在基数更新后自动重算。
用法七:跨表核对(双向对账)
对账思路是双向计数:A表有而B表无的,=SUMPRODUCT((COUNTIF(B表键列,A表键列)=0)*1);反向再来一次。两个方向都为零,两表键列完全一致。配合条件格式标红,一份签证单与结算书的项目对账表十分钟可成。
用法八:文本条件与模糊匹配
SUMPRODUCT 的条件里可以用文本函数:=SUMPRODUCT((LEFT(A列,2)=分部代码)*金额列)按前两位编码汇总;结合 ISNUMBER(FIND(...)) 可做包含匹配。模糊条件让台账不必为统计而增加辅助列。
| 场景 | 公式骨架 | 备注 |
|---|---|---|
| 单条件求和 | ((条件)=x)*求和列 | 条件可引用单元格 |
| 多条件求和 | 条件1*条件2*求和列 | 乘号即「且」 |
| 多条件计数 | 条件1*条件2 | 不乘金额列 |
| 加权平均 | SUMPRODUCT(量,价)/SUM(量) | 区域等长且无文字 |
| 区间统计 | (列>=下限)*(列<上限) | 行标题引用上下限 |
| 对账查缺 | (COUNTIF(对表,键)=0)*1 | 双向核对 |
注:SUMPRODUCT 整列引用(如 A:A)在旧版本中计算较慢,建议限定为实际数据区域;含文字的求和列需用双负号或条件过滤处理。
结论:SUMPRODUCT 的本质是「条件数组相乘后求和」,掌握这一点,多条件汇总、计数、加权、对账都是同一个套路的变体。把它设为个人函数库的常备项,成本台账的处理速度会有立竿见影的提升。