Excel 条件判断、计数与汇总
本篇使用命名为 Sales 的八条订单,H 列为金额。所有公式放在数据表之外,例如 汇总 工作表,避免在金额列中引用整列自身形成循环引用。
点击步骤切换图示,再到 Office 中跟做;每一步都可跳到下方详细说明。
表名:汇总
原始表:Sales
详细输入与检查见本步正文 ↓判断与组合条件
在订单旁增加“处理提示”列,可以写:
=IF([@状态]="已完成","归档","跟进")
=IF(AND([@状态]="已完成",[@金额]>=500),"重点复核","普通")第一式把取消和待处理都归入“跟进”,未必符合真实流程。更明确的写法是先判断已取消,再判断已完成,剩余为待处理。嵌套超过几层时,考虑用单独的状态映射表,让规则可见而不是埋在长公式里。
AND 要求条件同时满足,OR 要求至少一个满足。比较字符串时注意前后空格和不同写法,“已完成”和“完成”不会自动被当成同一个状态。
单条件与多条件汇总
=SUM(Sales[金额])
=SUMIF(Sales[部门],"运营",Sales[金额])
=SUMIFS(Sales[金额],Sales[状态],"已完成")
=COUNTIFS(Sales[状态],"已完成")
=AVERAGEIF(Sales[状态],"已完成",Sales[金额])结果分别为 5120、2440、4060、6、约 676.67。最后一个值是已完成订单的平均金额,不是平均单价。改变指标名称而不改变公式,会产生“公式正确、业务结论错误”的问题。
SUMIF 的求和区域通常是第三个参数,SUMIFS 的求和区域是第一个参数,初学时很容易写反。所有条件区域与求和区域的行数必须一致。需要让条件可修改时,把“运营”等条件放在一个参数单元格,再引用该单元格。
按完整月份统计
统计 2026 年 10 月已完成金额:
=SUMIFS(Sales[金额],Sales[状态],"已完成",Sales[日期],">="&DATE(2026,10,1),Sales[日期],"<"&DATE(2026,11,1))结果为 3160。使用“本月第一天及以后、下月第一天之前”可以包含本月最后一天的时间值。若写成小于等于 2026-10-31 的零点,带时分秒的 10 月 31 日白天记录可能被漏掉。
日期列必须是真实日期/时间值,格式看起来像日期的文本不一定能参与正确比较。用 ISNUMBER 检查练习日期,返回 FALSE 时先修复数据类型。
筛选后的统计
普通 SUM 不会因为筛选隐藏行而自动只计算可见记录。需要随筛选变化的金额合计时,在表外输入:
=SUBTOTAL(109,Sales[金额])筛选“状态 = 已完成”后应为 4060。109 表示求和并忽略手工隐藏的行,9 也会排除筛选隐藏行,但对手工隐藏行的处理不同。它仍然是在当前表的可见记录上计算,不自动实现“业务已完成”等规则。
常见陷阱
COUNT 统计数值单元格,COUNTA 统计非空内容,不能随意互换。条件中的 * 和 ? 可作为通配符,若要匹配字面星号需了解转义。平均值要明确分母,平均订单金额与按数量加权的平均单价不同;本数据全部金额除以全部数量为 5120/20=256,这也包含未完成订单。
练习与验收
计算技术部门已完成金额,答案是 1620;只取 10 月则为 720。筛选运营部门后,SUBTOTAL 应为 2440,而普通全表 SUM 仍为 5120。解释这些数为什么不同,再进入数据透视表用另一种方式核对。
图示跟做:算清十月已完成订单的金额
按上方图示切换三个关键步骤;下面保留完整操作和检查结果,便于跟做与回查。请先使用练习副本。
第 1 步:先把口径写到汇总表
定位:工作表标签 → 加号。
在工作簿底部点击加号新建汇总表,写明“状态为已完成;日期从 2026-10-01 起,到 2026-11-01 之前”。保留原明细不做删除。确认 Sales 包含金额列,日期可用 ISNUMBER 检查为数值,避免把看起来像日期的文字直接拿来比较。
第 2 步:输入条件并核对边界
定位:公式 → 插入函数。
在汇总空白格输入本篇按完整月份统计的 SUMIFS 公式,金额区域放第一个参数,状态和日期条件逐对配对。结果应为 3160。再单独统计全部已完成金额,应为 4060;相差 900 正好是 11 月的 O008,能解释差值才算核对通过。
第 3 步:区分业务条件与界面筛选
定位:数据 → 筛选。
到明细表筛选运营部门,在表外使用 =SUBTOTAL(109,Sales[金额]),结果为 2440。此时普通 =SUM(Sales[金额]) 仍为 5120,原来的十月已完成 SUMIFS 也不会自动因为部门筛选而改变。若希望按部门统计,应把部门写进条件,而不是只操作筛选菜单。
没有得到预期结果时
先判断是范围错、数据类型错还是业务口径错。把错误统一包成 IFERROR(...,0) 会把未修复的数据问题伪装成零金额,汇总前应保留并处理异常。
继续阅读
- 实践案例
- 故障排查
- 参考资料