如何用Google Sheets Query聚合多列数据统计车手获胜次数
解决Google Sheets QUERY统计车手不同赛道获胜次数的问题
你的核心需求是统计每个车手在不同赛道上的获胜次数,但原表格存在重复的赛道数据,直接用GROUP BY统计会忽略赛道维度,导致结果不符合预期。
原公式问题分析
- 第一个公式仅筛选出了获胜车手,但未做计数统计
- 第二个公式直接按车手分组统计满足获胜条件的行数,但没有关联赛道维度:如果同一车手在同一赛道有多条重复记录,会错误重复计数;若数据中每个车手单条获胜记录对应重复赛道行,就会出现统计结果全为1的情况。
解决方案:先去重车手+赛道组合,再统计
需要先提取车手+赛道的唯一组合,再统计每个车手对应的唯一赛道数量,以下两种方式均可实现:
方法1:FILTER + UNIQUE + QUERY 组合
假设赛道数据在第6列(Col6),请替换为实际的赛道列序号:
=QUERY( UNIQUE( FILTER( {'SheetName'!A:A, 'SheetName'!F:F}, 'SheetName'!B:B=1, 'SheetName'!C:C=1, 'SheetName'!D:D=1, 'SheetName'!E:E=1 ) ), "SELECT Col1, COUNT(Col1) GROUP BY Col1 LABEL Col1 '车手', COUNT(Col1) '不同赛道获胜次数'" )
逻辑说明:
FILTER筛选出所有满足获胜条件(Col2-Col5任意为1)的车手(Col1)和对应赛道(Col6)UNIQUE去除同一车手同一赛道的重复条目,确保每条赛道只统计一次- 外层
QUERY按车手分组,统计每个车手对应的唯一赛道数量
方法2:嵌套QUERY + UNIQUE
同样假设赛道列是Col6:
=QUERY( UNIQUE( QUERY( {'SheetName'!1:998}, "SELECT Col1, Col6 WHERE Col2=1 OR Col3=1 OR Col4=1 OR Col5=1", 1 ) ), "SELECT Col1, COUNT(Col1) GROUP BY Col1 LABEL COUNT(Col1) '获胜赛道数'", 1 )
逻辑说明:
- 内层
QUERY先筛选出所有获胜的车手和赛道数据 UNIQUE去重车手+赛道的组合- 外层
QUERY完成分组统计
注意事项
- 替换公式中的
'SheetName'为你的实际工作表名称 - 将
Col6替换为存储赛道信息的列序号(比如赛道在G列则改为Col7) - 若表格有表头,需在QUERY的第三个参数填
1(表示第一行是表头)
内容的提问来源于stack exchange,提问作者LordSolarSteve
相关产品推荐
相关产品推荐

