Google Sheet多条件统计问题:按年份+指定周统计企业出现次数
Google Sheets 按年份+指定周统计企业出现次数解决方案
一、自动统计所有企业及频次(实时响应周数切换)
使用QUERY函数结合动态单元格引用,实现年份和周数的实时筛选统计:
=QUERY(数据!A:C, "SELECT B, COUNT(B) WHERE YEAR(A) = "&仪表板!A1&" AND WEEKNUM(A) = "&仪表板!B1&" AND B IS NOT NULL GROUP BY B ORDER BY COUNT(B) DESC LABEL B '企业名称', COUNT(B) '出现次数'", 1)
参数说明:
数据!A:C:替换为你的数据源范围(A列存日期,B列存企业名称)仪表板!A1:年份选择控件所在单元格仪表板!B1:周数选择控件所在单元格WEEKNUM(A):若你的周数起始规则为周一,可改为WEEKNUM(A,2)
该公式会自动按指定年份+周数统计企业出现次数,按频次降序排列,切换周数/年份时实时更新结果。
二、批量列出所有并列最高频次的企业
如果需要单独提取所有频次并列第一的企业,可基于上述统计结果,用FILTER和MAX组合实现:
假设基础统计结果在D:E列(D为企业名称,E为次数):
- 获取最高频次:
=MAX(E2:E)
- 列出所有频次等于最高值的企业:
=FILTER(D2:D, E2:E = MAX(E2:E))
整合版公式(一步到位)
用LET函数将统计与提取合并,避免冗余:
=LET( 统计结果, QUERY(数据!A:C, "SELECT B, COUNT(B) WHERE YEAR(A) = "&仪表板!A1&" AND WEEKNUM(A) = "&仪表板!B1&" AND B IS NOT NULL GROUP BY B ORDER BY COUNT(B) DESC", 0), 最高频次, INDEX(统计结果, 1, 2), {统计结果; "并列最高企业:", TEXTJOIN(", ", TRUE, FILTER(INDEX(统计结果,,1), INDEX(统计结果,,2)=最高频次))} )
该公式会先输出完整的企业频次列表,最后一行自动汇总所有并列最高的企业名称。
三、常见问题修复
- 切换周数后公式不筛选:检查年份/周数控件单元格是否为数值格式,确保
QUERY中的引用&仪表板!A1&没有被引号包裹(静态值会导致无法更新) - 周数统计偏差:根据所在地区调整
WEEKNUM的第二参数,比如中国常用WEEKNUM(A,2)(周一为一周第一天) - 统计包含空白值:在
QUERY的WHERE条件中添加AND B IS NOT NULL,过滤无意义的空数据
内容的提问来源于stack exchange,提问作者Porky Guy
相关产品推荐
相关产品推荐

