Excel | 您所在的位置:网站首页 › excel怎样按姓名的序号排序 › Excel |
0
分享至
用微信扫码二维码 分享至好友和朋友圈 问题来源 如下两个表格: 第一种情况是按姓名排序的,第二种情况姓名未加排序。 两种情况下,怎样给相同姓名添加相同编号? 今天韩老师给出函数法与VBA法。 函数方法相同姓名有序排列: 1、在A2单元格输入编号1; 2、在A3单元格输入公式: =IF(B3=B2,A2,A2+1) 该公式的含义是: 如果B3和B2姓名相同,则填写B2对应的编号A2,否则A2+1; 相同姓名凌乱无序排列: 其实在真正工作中,有序排列的姓名不多,更多的是无序排列。 1、在F2中输入公式: =IFERROR(VLOOKUP(G2,IF({1,0},G$1:G1,F$1:F1),2,0),N(F1)+1) 向下填充,即得结果: 其中: IF({1,0},G$1:G1,F$1:F1): 是由IF函数重新构建一动态区域,该区域有两列: 第一列是姓名,起始单元格是G1,结束单元格随公式向下填充而扩展; 第二列是编号,起始单元格是F1,结束单元格随公式向下填充而扩展; 公式不管填充到哪一行,该动态区域的结束行都是当前公式所在行的上一行。 VLOOKUP(G2,IF({1,0},G$1:G1,F$1:F1),2,0): 在上述动态区域中精确查找姓名对应的编号。 IFERROR(VLOOKUP(G2,IF({1,0},G$1:G1,F$1:F1),2,0),N(F1)+1): 如果查找姓名G2对应的编号出错,则返回N(F1)+1; 公式向下填充,如果到第12行,则:查找姓名G12对应的编号出错,则返回N(F11)+1。 N函数: 语法:N(VALUE); 功能:将不是数值的值转换为数值形式; 不同参数VALUE,对应的返回值: 本示例中,N(F1)的返回值是0。 注:无序排列的公式同样适合有序排列! VBA法 代码为: Sub 编号() Dim a As Object, i As Long '创建字典/ Set a = CreateObject("scripting.dictionary") For i = 2 To Range("b1").CurrentRegion.Rows.Count If Not a.exists(Cells(i, 2).Value) Then '添加编号到字典,第一个编号不存在),则 k = k + 1 '计数 a(Cells(i, 2).Value) = k '给字典key编号,第一个编号是1,第二个编号是2...... Cells(i, 1) = k '返回给第一列,分组 Else '如果字典(编号)存在 Cells(i, 1) = a(Cells(i, 2).Value) '直接在字典里查询编号 End If Next End Sub 用法: 特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。 Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services. /阅读下一篇/ 返回网易首页 下载网易新闻客户端 |
CopyRight 2018-2019 实验室设备网 版权所有 |