提取页码去重再编号

82 篇文章 6 订阅
58 篇文章 2 订阅
该文章介绍了一个VBA代码示例,用于处理Excel表格中的数据。代码通过创建字典对象,对档号数据进行处理,当档号的页数相同时,赋予相同的“卷内顺序号”,实现了序号的递增。关键操作包括数据读取、字典去重以及利用字典的Count属性生成序号。
摘要由CSDN通过智能技术生成

实例需求:A列为档号数据,由多段数字组成,使用减号作为分隔符,最后一段数字代表页数,注意页数是不连续的,倒数第二段数字是代表档案中的第几本,每个档案都是从1开始。现在需要在B列创建“卷内顺序号”,按照顺序递增,如果A列中最后一段数字(页数)相同,那么序号也相同(如黄色区域所示)。最终效果如下图所示。

在这里插入图片描述

示例代码如下。

Sub demo()
    arrData = [a1].CurrentRegion.Value
    Set dic = CreateObject("scripting.dictionary")
    strKey = ""
    For i = 2 To UBound(arrData)
        strFile = Left(arrData(i, 1), Len(arrData(i, 1)) - 3)
        If strKey <> strFile Then
            dic.RemoveAll
            strKey = strFile
        End If
        dic(arrData(i, 1)) = ""
        arrData(i, 2) = "'" & Format(dic.Count, "00")
    Next
    [a1].CurrentRegion.Value = arrData
    Set dic = Nothing
End Sub

【代码解析】
第2行代码将数据区域读取到数组中。
第3行代码创建字典对象。
第4行代码创建变量用于保存当前档案号(去除后三位数字)。
第5~13行代码序号处理数据。
第6行代码去除档案号的后三位数字,下文简称为档案号标识。
第7行代码判断当前档案号标识是否与strKey一致,如果不一致,说明当前数据行为一个新档案,第8行代码清空字典对象,第9行代码将档案号标识保存到变量strKey中。
否则,第11行代码在字典对象中添加键值对。
第12行代码将“卷内顺序号”数据写入数组中,此处利用字典对象的去重功能,dic.Count获取字典对象中的键值对的个数,即为“卷内顺序号”。
第14行代码将数组中的数据写入单元格区域中。
第15行代码释放对象变量占用的系统资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值