基于指定键列提取唯一记录的动态数组公式简化方案需求
简洁提取唯一记录并保留首条关联数据的动态数组方案
需求说明
以绿色高亮列为唯一标识键,提取该列的所有唯一值,同时保留其他列对应该唯一值的第一条出现的记录。
输入与期望结果
- 输入:包含重复唯一键的多列数据(绿色列为唯一标识列)
- 期望输出:唯一键列去重,每一个唯一值对应其他列的首条关联数据
解决方案(Excel 365/2021 动态数组版)
方案1:极简多列提取公式
如果数据范围是A2:D10(B列为绿色唯一标识列),在结果区域首单元格输入以下公式,自动溢出完整结果:
=INDEX(A2:D10, MATCH(UNIQUE(B2:B10), B2:B10, 0), 0)
原理
UNIQUE(B2:B10):提取绿色列的所有唯一值MATCH(..., B2:B10, 0):获取每个唯一值在原数据中第一次出现的行号INDEX(A2:D10, 行号数组, 0):根据行号数组,直接返回对应行的所有列数据,一步完成去重+首条记录保留
方案2:分列自定义拼接(适用于需调整列顺序的场景)
如果需要调整输出列的顺序,用LET+HSTACK组合更灵活:
=LET( unique_keys, UNIQUE(B2:B10), HSTACK( XLOOKUP(unique_keys, B2:B10, A2:A10), // 匹配A列首条数据 unique_keys, // 唯一键列 XLOOKUP(unique_keys, B2:B10, C2:C10), // 匹配C列首条数据 XLOOKUP(unique_keys, B2:B10, D2:D10) // 匹配D列首条数据 ) )
原理
LET定义变量减少重复引用,提升可读性XLOOKUP默认返回第一个匹配项,完美契合"保留第一条记录"的需求HSTACK将各列结果横向拼接,自由调整输出列顺序
注意事项
- 需使用支持动态数组的Excel版本(365/2021及以后)
- 替换公式中的数据范围和列引用,适配你的实际数据结构
内容的提问来源于stack exchange,提问作者Jred
相关产品推荐
相关产品推荐

