如何在Google Sheets中按季提取最高/最低评分的剧集名称?
解决Google Sheets中按季获取《南方公园》评分极值剧集的问题
前提假设
假设你的剧集数据存储在Sheet1,列结构如下:
- A列:季数(数值/文本型均可)
- B列:集数
- C列:剧集名
- D列:个人评分(数值型)
- E列:IMDB平均评分(数值型)
统计表位于Sheet2,用于展示各季的评分极值剧集,A列为季数,B~E列分别对应「个人评分最高剧集」「个人评分最低剧集」「IMDB评分最高剧集」「IMDB评分最低剧集」。
核心公式(支持同评分多剧集合并)
1. 自动生成所有季数
在Sheet2!A2输入以下公式,自动提取所有不重复的季数:
=ARRAYFORMULA(UNIQUE(Sheet1!A:A))
2. 个人评分最高剧集(Sheet2!B2,下拉填充)
=TEXTJOIN("、", TRUE, FILTER(Sheet1!C:C, (Sheet1!A:A=Sheet2!A2)*(Sheet1!D:D=MAX(FILTER(Sheet1!D:D, Sheet1!A:A=Sheet2!A2)))))
逻辑:先筛选当前季的所有个人评分并取最大值,再匹配该季中评分等于最大值的所有剧集名,最后用「、」合并多结果。
3. 个人评分最低剧集(Sheet2!C2,下拉填充)
=TEXTJOIN("、", TRUE, FILTER(Sheet1!C:C, (Sheet1!A:A=Sheet2!A2)*(Sheet1!D:D=MIN(FILTER(Sheet1!D:D, Sheet1!A:A=Sheet2!A2)))))
4. IMDB评分最高剧集(Sheet2!D2,下拉填充)
=TEXTJOIN("、", TRUE, FILTER(Sheet1!C:C, (Sheet1!A:A=Sheet2!A2)*(Sheet1!E:E=MAX(FILTER(Sheet1!E:E, Sheet1!A:A=Sheet2!A2)))))
5. IMDB评分最低剧集(Sheet2!E2,下拉填充)
=TEXTJOIN("、", TRUE, FILTER(Sheet1!C:C, (Sheet1!A:A=Sheet2!A2)*(Sheet1!E:E=MIN(FILTER(Sheet1!E:E, Sheet1!A:A=Sheet2!A2)))))
扩展:显示集数+剧集名格式
如果需要结果呈现「集数 - 剧集名」的样式,修改FILTER范围即可,以个人评分最高为例:
=TEXTJOIN("、", TRUE, ARRAYFORMULA(FILTER(Sheet1!B:B&" - "&Sheet1!C:C, (Sheet1!A:A=Sheet2!A2)*(Sheet1!D:D=MAX(FILTER(Sheet1!D:D, Sheet1!A:A=Sheet2!A2))))))
关于Query函数失效的原因
Query的聚合逻辑(如MAX())默认仅返回极值数值,无法直接关联对应剧集名;且遇到同评分多剧集时,Query只会返回第一条匹配结果,无法自动合并所有符合条件的条目,因此FILTER+TEXTJOIN的组合更适配你的需求。
注意事项
- 确保评分列(D、E列)为数值格式,否则
MAX()/MIN()无法正确计算。 - 若季数是文本型(如「S01」),公式无需修改即可正常运行。
内容的提问来源于stack exchange,提问作者Doxophobia
相关产品推荐
相关产品推荐

