如何用Office365 Excel数组公式去重并保留最后对应值?
Excel去重并保留对应列最后一组值的解决方案
问题说明
现有A1-B5区域数据如下:
A 1 //remove A 2 B 3 //remove B 2 C 1
需求:对A列去重,同时保留其他列中对应最后一组值,预期结果如下:
A 2 B 2 C 1
已尝试FILTER、UNIQUE和XLOOKUP组合,但未找到可行方法。
可行解决方案
方法一:UNIQUE+XLOOKUP+SORT+HSTACK组合公式
在空白单元格(如D1)输入以下公式,回车后即可得到完整结果:
=HSTACK(UNIQUE(A:A,FALSE,FALSE),XLOOKUP(UNIQUE(A:A,FALSE,FALSE),SORT(A:A,1,1,TRUE),SORT(B:B,1,1,TRUE),"",0,2))
公式拆解
UNIQUE(A:A,FALSE,FALSE):提取A列的唯一值,保留原始出现顺序SORT(A:A,1,1,TRUE):对A列按升序排序,同时维持行维度的关联关系SORT(B:B,1,1,TRUE):同步排序B列,确保与A列的行对应关系一致XLOOKUP(..., "", 0, 2):查找每个唯一值在排序后A列中的最后一次出现位置,返回对应排序后B列的值HSTACK:将提取的唯一值和对应最后值横向拼接成结果区域
方法二:兼容旧版Excel的拆分公式
如果你的Excel版本不支持HSTACK,可以分两步操作:
- 提取A列唯一值:在D1单元格输入
=UNIQUE(A:A,FALSE,FALSE),回车后下拉填充 - 匹配对应最后值:在E1单元格输入
=XLOOKUP(D1,SORT(A:A,1,1,TRUE),SORT(B:B,1,1,TRUE),"",0,2),回车后下拉填充
方法三:INDEX+MATCH数组公式
对于不支持XLOOKUP的更旧版本Excel,可使用以下数组公式:
=INDEX(B:B,MATCH(1,(A:A=D1)*(ROW(A:A)=MAX(ROW(A:A)*(A:A=D1))),0))
注:旧版Excel需按
Ctrl+Shift+Enter触发数组计算,新版Excel直接回车即可。
内容的提问来源于stack exchange,提问作者user2847853
相关产品推荐
相关产品推荐

