如何基于Excel中姓、名两列分配全局唯一的联系人ID
Excel多列匹配全局分配唯一ID方案
核心逻辑为全局匹配C列(名)+D列(姓)的组合,相同组合始终对应同一个ID,不会因为行分散出现重复分配的问题,适配30000+行数据的性能需求。
方案1:Excel 365/2021及以上版本(支持动态数组)
在ID列首个数据行(假设表头在第1行,ID列是E列,第一个数据行是E2)输入如下公式,直接下拉填充即可:=IFERROR(XLOOKUP(C2&D2,$C$1:C1&$D$1:D1,$E$1:E1),MAX($E$1:E1)+1)
公式说明:
- 先将当前行的名、姓拼接为唯一标识字符串
C2&D2 - 检索当前行上方所有行的姓名组合,匹配成功则直接复用之前分配的ID
- 匹配失败说明是首次出现的联系人,取当前已分配的最大ID+1作为新ID
方案2:Excel 2019及更早版本(不支持动态数组)
在E2单元格输入如下公式,输入完成后按Ctrl+Shift+Enter三键确认为数组公式,再下拉填充:=IF(COUNTIFS($C$1:C1,C2,$D$1:D1,D2)=0,MAX($E$1:E1)+1,INDEX($E$1:E1,MATCH(C2&D2,$C$1:C1&$D$1:D1,0)))
公式说明:
- 先用
COUNTIFS判断当前姓名组合在上方行是否出现过 - 首次出现则生成新ID,非首次出现则匹配之前的ID复用
注意事项
- 公式中的绝对引用符号
$不要遗漏,确保下拉时检索范围始终是从表头到当前行的上一行 - 30000行数据下拉填充后计算耗时约2-3秒,无明显性能问题
- 如果后续需要增加匹配维度(比如手机号、公司名),只需在拼接/匹配逻辑中增加对应列即可
内容的提问来源于stack exchange,提问作者grxthy
相关产品推荐
相关产品推荐

