如何优化Google Sheets提取唯一邮箱对应最高得分的公式?
优化Google Sheets提取学生最高分的方案
需求
提取每位学生的唯一记录及对应最高得分,允许学生多次尝试,最终汇总表仅保留每个学生的一条记录。
原始数据
| A | B | |
|---|---|---|
| 1 | score | |
| 2 | abc@mail.com | 1 |
| 3 | abd@mail.com | 3 |
| 4 | abc@mail.com | 3 |
| 5 | abc@mail.com | 4 |
| 6 | abe@mail.com | 5 |
| 7 | abe@mail.com | 4 |
| 8 | abe@mail.com | 7 |
| 9 | jvr@mail.com | 1 |
| 10 | jvr@mail.com | 7 |
期望输出
| D | E | |
|---|---|---|
| 1 | score | |
| 2 | abc@mail.com | 4 |
| 3 | abd@mail.com | 3 |
| 4 | abe@mail.com | 7 |
| 5 | jvr@mail.com | 7 |
现有方案的不足
当前方案需要手动下拉E列公式,且逻辑冗余:
- D2公式
=UNIQUE(A2:A,FALSE,FALSE)未过滤空值,可能提取无效空行 - E列公式引用未明确的G列,且
ARRAYFORMULA用于单个单元格无意义,无法自动批量处理
优化方案
方案1:QUERY函数一步生成完整结果
在任意空白单元格(比如D2)输入以下公式,直接生成包含表头的完整汇总表,无需拆分操作:
=QUERY(A2:B10, "SELECT A, MAX(B) WHERE A IS NOT NULL GROUP BY A LABEL A 'email', MAX(B) 'score'", 1)
- 逻辑解析:
SELECT A, MAX(B):选取邮箱列及对应最高分GROUP BY A:按邮箱分组聚合LABEL:自定义表头名称- 最后一个参数
1:指定原始数据包含表头
方案2:UNIQUE+MAXIFS数组公式拆分处理
如果需要分开维护邮箱列和得分列:
- D2单元格输入(自动提取非空唯一邮箱):
=UNIQUE(FILTER(A2:A, A2:A<>""))
- E2单元格输入(自动匹配所有邮箱的最高分,无需下拉):
=ARRAYFORMULA(IF(D2:D="", "", MAXIFS(B:B, A:A, D2:D)))
- 逻辑解析:
FILTER:过滤A列空值,避免UNIQUE生成无效空行ARRAYFORMULA:让MAXIFS批量处理D列所有邮箱IF:处理D列空行时返回空值,保持表格整洁
内容的提问来源于stack exchange,提问作者jean-charles Ricaud
相关产品推荐
相关产品推荐

