如何让Google Sheets数组公式生效:按指定规则去重保留最后一行
Google Sheets按条件两列去重解决方案
可直接使用的公式
粘贴到输出区域的首个单元格即可生效:
=LET( data,'raw data'!A2:H37, row_num,SEQUENCE(ROWS(data)), key,IF(INDEX(data,,2)="",row_num,INDEX(data,,1)&"|"&INDEX(data,,2)), filter_row,BYROW(row_num,LAMBDA(x,x=MAX(FILTER(row_num,key=INDEX(key,x))))), SORT(FILTER(data,filter_row),1,1) )
如果你的表格数据范围不是A2:H37,自行修改公式里的'raw data'!A2:H37部分即可。
逻辑说明
完全匹配要求的3条规则:
- B列为空时,直接用当前行号作为去重键,确保所有B列空的行不会被判定为重复,全部保留
- B列非空时,用A列+B列的拼接值作为去重键,相同组合视为重复项
- 仅保留每个去重键对应的最大行号的行,保证重复项永远保留最后出现的那一行
- 最终结果按原始数据的顺序排列,不会打乱原有行序
原公式失效原因
原公式嵌套了多层SORT、UNIQUE、VLOOKUP函数,VLOOKUP匹配空值拼接的键时容易出现匹配错位,多层排序也会导致原始行号的对应关系混乱,最终无法符合去重规则。
内容的提问来源于stack exchange,提问作者HSHO
相关产品推荐
相关产品推荐

