打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何给姓名编写序号,辅助列用起来!
如下图所示,A列是一些姓名,现在的要求是给A列的姓名编号,结果如B列所示。

-01-

函数法

对于这个问题,我们可以用辅助列的方法来做。在C列添加一个辅助列,C3单元格输入公式=LEN(A3)-LEN(SUBSTITUTE(A3,"、",))+1,下拉填充,计算出每个单元格的人数。

LEN(A3)-LEN(SUBSTITUTE(A3,"、",))这部分是计算A3单元格中顿号的个数,用原来字符串的长度减去将顿号替换掉的字符串的长度。用顿号的个数加1,就是人数。

然后在B3单元格中输入下面的公式,按ctrl+shift+enter三键,下拉填充,完成。

=TEXTJOIN("、",1,BASE(ROW(INDIRECT("1:"&C3))+SUM(C$2:C2),10,3))


为了方便解释,下面以B5单元格的公式进行说明。

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"。这样就完成了,其它单元格也是同样的运算方法。

不用辅助列的公式就不列出来了,感兴趣的小伙伴可以下载文件自行查看。


-02-

VBA代码法

如下图所示,我将结果放在D列。首先选中D3:D12,将其设置为文本格式,然后点击按钮,结果就出来了。
供观看的代码如下:
文件链接:

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

提取码:e99o
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
将带分隔符的字符串拆分成数组的Excel通用公式
根本不想开长火车,幸好有它可以帮我!
用数组公式获取字符在字符串中最后出现的位置
用函数在Excel中从文本字符串提取数字
【Excel函数】全了!SUBSTITUTE模块化用法七则
office excel最常用函数公式技巧搜集大全(13.12.09更新)10
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服