人气 4471

Excel在有序无序排列中为相同的内容添加相同编号 [复制链接]

goodmother 2017-9-12 17:14:00
有如下两种表格:第一种情况是相同姓名有序排列,第二种情况相同姓名凌乱未排序。

1505206877970452.jpg

1505206877970452.jpg

这两种情况下,如何给相同姓名添加相同编号?
函数方法:相同姓名有序排列:1、在A2单元格输入编号1;2、在A3单元格输入公式:=IF(B3=B2,A2,A2+1)(该公式的含义是:如果B3和B2姓名相同,则填写B2对应的编号A2,否则A2+1;)

1505207220406392.gif

1505207220406392.gif

相同姓名凌乱无序排列:其实在真正工作中,有序排列的姓名不多,更多的是无序排列。1、在F2中输入公式:=IFERROR(VLOOKUP(G2,IF({1,0},G$1:G1,F$1:F1),2,0),N(F1)+1)向下填充,即得结果

1505207104117433.jpg

1505207104117433.jpg

其中: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编号()
    DimaAsObject,iAsLong '创建字典/
    Seta=CreateObject("scripting.dictionary")
    Fori=2ToRange("b1").CurrentRegion.Rows.Count
    IfNota.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) '直接在字典里查询编号
    EndIf
    Next
    EndSub动态图:

    1505207188219160.gif

    1505207188219160.gif

    参考至:韩老师讲office(头条号)
  • 您需要登录后才可以回帖 登录 | 立即注册

    QQ|手机版|精益人 ( 沪ICP备19004111号-1 )|网站地图

    GMT+8, 2024-12-23 04:31 , Processed in 0.261136 second(s), 23 queries .

    Powered by Lean.ren X3.5 Licensed  © 2001-2030 LEAN.REN