Google Sheets ArrayFormula多行列多单元格对比需求收尾
公式调整方案
针对你的迪士尼影音清单表格,以下是适配新增格式标记列的两个公式,完全符合你给定的规则:
1. 「是否有更高画质版本?」列公式
假设:
- A列为影片名称
- E列为格式标记列(值为
4K/3D/BD/DVD,复选框格式可参考下方调整说明)
=ARRAYFORMULA(IF(A2:A="",, LET( current_score, SWITCH(E2:E, "4K",4, "3D",3, "BD",2, "DVD",1), film_name, A2:A, MAP(film_name, current_score, LAMBDA(name, score, LET( other_scores, FILTER(current_score, film_name=name, ROW(current_score)<>ROW(score)), valid_other_scores, IF(score<=2, FILTER(other_scores, other_scores<>3), other_scores), IF(IFERROR(MAX(valid_other_scores),0)>score, "是", "否") ) )) ) ))
逻辑说明:
- 通过
SWITCH给各格式赋予优先级分数:4K=4、3D=3、BD=2、DVD=1 - 针对每一行:
- 筛选同影片的其他版本分数
- 若当前版本是
DVD或BD(分数≤2),过滤掉3D版本的分数(3D不算它们的升级选项) - 若当前版本是
3D或4K,保留所有其他版本分数 - 比较有效分数的最大值是否大于当前分数,返回「是」或「否」
2. 「是否有同画质版本?」列公式
同样基于A列(影片名)和E列(格式标记):
=ARRAYFORMULA(IF(A2:A="",, LET( current_score, SWITCH(E2:E, "4K",4, "3D",3, "BD",2, "DVD",1), film_name, A2:A, MAP(film_name, current_score, LAMBDA(name, score, LET( same_score_count, COUNTA(FILTER(current_score, film_name=name, current_score=score, ROW(current_score)<>ROW(score))), IF(same_score_count>0, "是", "否") ) )) ) ))
逻辑说明:
- 同样赋予格式优先级分数
- 统计同影片中,与当前版本分数相同的其他条目数量
- 数量大于0则返回「是」,否则返回「否」
复选框格式适配调整
如果格式标记用的是多列复选框(比如E列=4K、F列=3D、G列=BD、H列=DVD),需要修改current_score部分为:
current_score, IFS( E2:E=TRUE,4, F2:F=TRUE,3, G2:G=TRUE,2, H2:H=TRUE,1 ),
这个逻辑会自动取优先级最高的已勾选格式作为当前版本的画质等级。
内容的提问来源于stack exchange,提问作者Computer Candy
相关产品推荐
相关产品推荐

