如何给姓名编写序号,辅助列用起来!

函数法

LEN(A3)-LEN(SUBSTITUTE(A3,"、",))这部分是计算A3单元格中顿号的个数,用原来字符串的长度减去将顿号替换掉的字符串的长度。用顿号的个数加1,就是人数。
=TEXTJOIN("、",1,BASE(ROW(INDIRECT("1:"&C3))+SUM(C$2:C2),10,3))


ROW(INDIRECT("1:"&C5))这部分相当于row(1:2),indirect将文本型的"1:2"(字符串)变为真正的1到2行(单元格区域)。
SUM(C$2:C4)是计算公式所在单元格上面区域的所有人数。也就是计算A5单元格之前的所有人数,共7人。
ROW(INDIRECT("1:"&C5))+SUM(C$2:C4)这两部分相加,就是用row(1:2)+7,结果为{8;9}。
简单来说,就是先算出A5单元格的人数2,然后用row+indirect将其变为{1;2},再算出A5单元格上面所有的总人数7,最后用{1;2}+7得到{8;9}。
BASE(ROW(INDIRECT("1:"&C5))+SUM(C$2:C4),10,3)这部分就是BASE({8;9},10,3),用base函数将{8;9}变为{"008";"009"}。和TEXT({8;9},"000")是一样的。
最后用textjoin将{"008";"009"}连接在一起,并用顿号作为分隔符,结果为"008、009"。这样就完成了,其它单元格也是同样的运算方法。
不用辅助列的公式就不列出来了,感兴趣的小伙伴可以下载文件自行查看。
VBA代码法


https://pan.baidu.com/s/1lcWMYKm-0Hfs7oq_0QX6UQ
赞 (0)