EXCEL中基于名称的自动编号公式
- 2026-09-18 11:16:55
EXCEL中基于名称的自动编号公式
=IF(E2="","",100001+MATCH(E2,INDEX(UNIQUE(FILTER(E$2:E$2400,E$2:E$2400<>"")),0),0)-1)各函数作用:
1. 外层IF函数:
IF(E2="","",...)作用:检查E2单元格是否为空
如果为空:返回空字符串
""如果不为空:执行后面的计算
2. 核心计算部分:
100001 + MATCH(...) - 1100001:起始ID值
-1:因为MATCH返回的是位置序号(从1开始),需要减1来对齐
实际效果:生成从100001开始的序列号
3. MATCH函数:
MATCH(E2, INDEX(...), 0)作用:查找E2在数组中的位置
E2:要查找的值(当前行的名称)
INDEX(...):查找的范围(唯一值数组)
0:精确匹配模式
4. INDEX函数:
INDEX(UNIQUE(FILTER(...)), 0)INDEX(..., 0):返回整个数组(不是单个值)
将UNIQUE函数生成的数组传递给MATCH作为查找范围
5. UNIQUE函数:
UNIQUE(FILTER(E$2:E$2400, E$2:E$2400<>""))作用:去除重复值,返回唯一值列表
FILTER(...):先过滤掉空值
6. FILTER函数:
FILTER(E$2:E$2400, E$2:E$2400<>"")作用:筛选E2:E2400范围内非空的值
E$2:E$2400:数据范围
E$2:E$2400<>"":筛选条件(非空)
公式执行流程:
过滤:
FILTER(E$2:E$2400, E$2:E$2400<>"")从E2到E2400中筛选出所有非空的单元格
去重:
UNIQUE(...)对上一步的结果去除重复值
得到所有唯一的协定方名称列表
转数组:
INDEX(..., 0)将唯一值列表转为数组格式
查找位置:
MATCH(E2, ..., 0)查找当前行的名称(E2)在唯一值列表中的位置
例如:"名称1"在第1个位置,返回1
"名称2"在第2个位置,返回2
计算ID:
100001 + 位置 - 1位置1:100001 + 1 - 1 = 100001
位置2:100001 + 2 - 1 = 100002
位置3:100001 + 3 - 1 = 100003
简化理解:
这个公式实际上在做:
获取所有不重复的名称
给每个名称分配一个从100001开始的序号
根据当前行的名称,返回对应的序号
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。