按要求使用VBA批量修改数据量非常大的数字号码
VBA在Excel中的应用非常灵活,可以满足常用函数不可实现的功能,其强大的功能使我们的工作变得非常轻松!
本文,我们来学习一例,如何应用VBA批量修改诸如考号、编号、身份证号等数字号码的批量修改!
操作方法
- 01
请认真看下图,在A列,存在数据量非常多的一大堆编号!
- 02
上表,每个号码的长度共有11位,现在,我们要做的就是,每个号码前面的9位保持不变,后面的三位分别依次变为001、002、003等,我们该如何做呢? 也许部分网友可能会提出这样的解决方案,即,将前面两个的后三位变为001、002,之后使用填充功能不就行了吗? 这就犯了“兵家”大忌了,由于这些号码前九位不是连续的,使用填充功能将会改变前面九位的号码,就失去原来的意义了,所以,使用填充功能是不可能实现的,要不,本例就没有任何意义了! 针对诸如此类的问题,使用VBA最适合不过了! 以下为实现的方法! 首先,执行“视图”→“工具栏”→“控件工具箱”;弹出控件工具箱!
- 03
如上图,在Excel窗口中拖出一个按钮控件! 之后右键点击按钮控件,执行“属性”;
- 04
如上图,在相应位置修改按钮上面的文字为“批量修改”! 最后,左键双击按钮,打开按钮的“Microsoft Visual Basic”VBA代码编写窗口,在窗口中输入如下图的代码即可!
- 05
代码输好之后,点击“Microsoft Visual Basic”窗口的运行按钮即可! 返回到Excel窗口,点击按钮,即可实现命题想要的结果! 为方便大家的学习,下面贴出源代码: '以下为代码开始 StartScanNum = 1 '扫描范围起始值 EndScanNum = 50 '扫描范围终止值 MyNum = "" '替换字符串 AddNum = 0 '自增量! For m = StartScanNum To EndScanNum '按顺序检查A列号码 If Len(Worksheets(1).Cells(m, 1).Value) <> 0 Then '号码不为空 MyNum = Left(Trim(Worksheets(1).Cells(m, 1).Value), 8) '截取前面8个号码 AddNum = AddNum + 1 '自增量加1 If Len(AddNum) = 1 Then '不足十位的以两个0填充 MyNum = MyNum + "00" + Trim(AddNum) End If If Len(AddNum) = 2 Then '不足百位的以一个0填充 MyNum = MyNum + "0" + Trim(AddNum) End If Worksheets(1).Cells(m, 2).Value = MyNum '将截取并修改好的号码赋值给原来的单元格 End If Next '代码结束