You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Excel筛选B列后按A列唯一值汇总C列数值的公式问题

Excel筛选后按A列唯一值汇总C列的解决方案

问题原因

你当前使用的SUMPRODUCT((C8:C8/COUNTIF(A8:A8;A8:A8)))(推测你实际引用了多行范围,比如C8:C10)无法识别筛选后的隐藏行,COUNTIF会计算所有行(包括隐藏行)中A列值的重复次数,导致筛选后结果无法同步更新。

正确公式(兼容所有Excel版本)

=SUMPRODUCT(SUBTOTAL(103,OFFSET(A8,ROW(A8:A100)-ROW(A8),0,1))*(C8:C100/COUNTIF(A8:A100,A8:A100)))

参数说明

  • SUBTOTAL(103,OFFSET(...)):103是忽略隐藏行的COUNTA函数代码,配合OFFSET逐个检查A列每行的可见性,可见行返回1,隐藏行返回0。
  • C8:C100/COUNTIF(A8:A100,A8:A100):对A列每个唯一值对应的C列数值做“去重汇总”——重复的A值对应的C列数值会被除以重复次数,相加后等价于每个唯一A值只取一次C列数值的总和。
  • SUMPRODUCT:将可见行标记与去重后的C列值相乘,最终求和得到筛选后的正确结果。

注意事项

  • 替换公式中的A8:A100和C8:C100为你实际的数据范围,避免使用整列引用(如A:A)以提升计算效率。
  • 若使用Excel 365/2021,可使用更简洁的动态数组公式:
    =SUM(XLOOKUP(UNIQUE(FILTER(A:A,SUBTOTAL(103,OFFSET(A:A,ROW(A:A)-MIN(ROW(A:A)),0,1)))),A:A,C:C,"",0))
    
    此公式先筛选出A列的可见行,提取唯一值后,通过XLOOKUP匹配对应的C列值并求和。

示例验证

假设你的数据如下:

A列B列C列
XA30
XB40
  • 未筛选时,公式返回30+40=70(符合你的初始结果)。
  • 筛选B列仅显示"A"时,公式返回30(符合你的预期)。

内容的提问来源于stack exchange,提问作者Elias Liappis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 21:57:30