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

Google Sheets公式:统计指定出现次数的唯一值数量

Google Sheets 多筛选条件下按会议次数统计客户账户数方案

字段与筛选条件预设

先统一公式引用的位置,你可以根据自己表格的实际列位置调整对应参数:

  • 原始数据列:A列为会议日期、B列为客户账户名称、C列为客户层级
  • 筛选条件单元格:
    • E1:统计周期开始日期
    • F1:统计周期结束日期
    • G1:待筛选的客户层级,留空则统计所有层级

推荐公式(支持自动溢出结果,无需辅助列)

使用LET函数把中间计算逻辑封装,不需要额外加辅助列,输入后直接返回你要的格式化结果:

=LET(
  valid_rows,FILTER(A:C,A:A>=E1,A:A<=F1,IF(G1<>"",C:C=G1,TRUE)),
  all_accounts,INDEX(valid_rows,,2),
  unique_accounts,UNIQUE(all_accounts),
  meet_counts,COUNTIF(all_accounts,unique_accounts),
  {
    "召开1次会议的账户共"&COUNTIF(meet_counts,1)&"个";
    "召开2次会议的账户共"&COUNTIF(meet_counts,2)&"个";
    "召开3次会议的账户共"&COUNTIF(meet_counts,3)&"个";
    "召开3次及以上会议的账户共"&COUNTIF(meet_counts,">=3")&"个"
  }
)

公式逻辑说明

  1. 第一步通过FILTER先把符合时间范围、客户层级要求的所有会议记录筛出来,从根源减少后续计算量
  2. 提取筛出记录里的全部账户名称,再去重得到符合条件的唯一账户列表
  3. 逐个统计每个唯一账户在筛选结果里的出现次数,也就是对应账户的开会次数
  4. 最后按开会次数分组,统计每个次数段对应的账户总数,拼接成你要的文本格式输出

旧版本兼容方案(无LET函数场景)

如果你的表格环境不支持LET函数,可以用辅助列拆分计算:

  1. 找空白列(比如Z列)作为第一辅助列,Z1输入以下公式提取符合筛选条件的唯一账户列表,公式会自动向下溢出所有结果:
    =UNIQUE(FILTER(B:B,A:A>=E1,A:A<=F1,IF(G1<>"",C:C=G1,TRUE)))
    
  2. AA列作为第二辅助列,AA1输入以下公式,下拉填充到Z列无值的行,统计每个账户的开会次数:
    =COUNTIFS(B:B,Z1,A:A,">="&E1,A:A,"<="&F1,C:C,IF(G1="","<>",G1))
    
  3. 在结果展示单元格分别输入对应统计公式即可:
    • 1次会议统计:="召开1次会议的账户共"&COUNTIF(AA:AA,1)&"个"
    • 2次会议统计:="召开2次会议的账户共"&COUNTIF(AA:AA,2)&"个"
    • 3次及以上会议统计:="召开3次及以上会议的账户共"&COUNTIF(AA:AA,">=3")&"个"

注意事项

  • 如果你的原始数据字段列位置和预设不一致,只需要修改公式里对应的列引用即可:比如账户名称存在D列,就把所有引用B列的位置改成D列,INDEX取列的序号对应调整为账户在筛选结果里的列位置
  • 不需要单独统计恰好3次会议的数值时,直接删掉LET公式结果数组里对应3次的那一行即可
  • 单独用COUNTIFS无法实现这个需求的核心原因是:COUNTIFS只能统计符合条件的记录总行数,无法完成「先按账户去重聚合计算次数,再按次数分组统计」的两层逻辑。

内容的提问来源于stack exchange,提问作者A.Be

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 05:57:38