如何在Excel中为城市生成可重复使用的唯一标识ID?
为重复城市分配唯一ID的Excel解决方案
基础公式法(兼容所有Excel版本)
直接用MATCH函数定位城市首次出现的位置,再拼接成目标ID格式:
- 假设城市数据在M列,从第2行开始,在目标单元格(比如N2)输入公式:
="TEST-"&TEXT(MATCH(M2,$M$2:$M$1000,0),"000") - 把公式里的
$M$2:$M$1000替换成你实际的城市列数据范围,下拉公式即可。 - 原理:
MATCH(M2,$M$2:$M$1000,0)会返回当前城市在列表中第一次出现的行号位置,同一个城市的首次位置固定,所以生成的ID也一致;TEXT(..., "000")是把数字转成带前导零的三位格式,确保ID是TEST-001、TEST-002这种统一格式。
你之前用的COUNTIF会统计到当前行为止的出现次数,所以重复行会递增数字,这就是不符合需求的原因。
Excel 365动态数组法(高效处理大数据)
如果用的是Excel 365/2021,用动态数组函数更省心:
- 先在空白列(比如O列)生成唯一城市列表:
=UNIQUE(M2:M1000) - 在相邻列(P列)给每个唯一城市分配ID:
="TEST-"&TEXT(SEQUENCE(ROWS(O2:O100)),"000") - 回到原数据列,用
XLOOKUP匹配对应ID(比如N2单元格):
下拉后所有重复城市都会自动匹配到对应的唯一ID。=XLOOKUP(M2,O2:O100,P2:P100,"")
Power Query批量处理法(适合大量数据,无需手动下拉)
如果数据量很大,用Power Query一次性搞定:
- 选中城市列,点击「数据」选项卡→「从表格/区域」(Excel 2016及以后支持),弹出的对话框勾选「我的表格有标题」,进入Power Query编辑器。
- 点击「转换」选项卡→「分组依据」,设置:
- 分组依据:选择你的城市列名称
- 新列名:输入
Grouped(自定义名称即可) - 操作:选择「所有行」
- 点击「添加列」→「自定义列」,输入公式:
这个公式会给每个分组的城市分配唯一的带前导零的ID。"TEST-"&Text.PadStart(Text.From(Table.PositionOf(#"分组依据", [Grouped])+1),3,"0") - 点击
Grouped列右侧的展开按钮,选择展开所有行,然后关闭并上载回Excel,就能得到每个城市对应唯一ID的结果。
内容的提问来源于stack exchange,提问作者Coding_Harry
相关产品推荐
相关产品推荐

