Dzwebs.Net

撰写电脑技术杂文十余年

在Excel中如何按一定要求使用VBA批量修改数据量非常大的数字号码

Admin | 2008-8-4 13:42:46 | 被阅次数 | 13738

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

  VBA在Excel中的应用非常灵活,可以满足常用函数不可实现的功能,其强大的功能使我们的工作变得非常轻松!

  本文,我们来学习一例,如何应用VBA批量修改诸如考号、编号、身份证号等数字号码的批量修改!

  请认真看下图,在A列,存在数据量非常多的一大堆编号!

  上表,每个号码的长度共有11位,现在,我们要做的就是,每个号码前面的9位保持不变,后面的三位分别依次变为001、002、003等,我们该如何做呢?

  也许部分网友可能会提出这样的解决方案,即,将前面两个的后三位变为001、002,之后使用填充功能不就行了吗?

  这就犯了“兵家”大忌了,由于这些号码前九位不是连续的,使用填充功能将会改变前面九位的号码,就失去原来的意义了,所以,使用填充功能是不可能实现的,要不,本例就没有任何意义了!

  针对诸如此类的问题,使用VBA最适合不过了!

  以下为实现的方法!

  首先,执行“视图”→“工具栏”→“控件工具箱”;弹出控件工具箱!

  如上图,在Excel窗口中拖出一个按钮控件!

  之后右键点击按钮控件,执行“属性”;

  如上图,在相应位置修改按钮上面的文字为“批量修改”!

  最后,左键双击按钮,打开按钮的“Microsoft Visual Basic”VBA代码编写窗口,在窗口中输入如下图的代码即可!

  代码输好之后,点击“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
'代码结束

  知识扩展:

  以上实现的功能是修改后三位的编号为001、002、……,仅作学习之用,如果您的需求并非如此,请适当修改相应代码即可实现!或者,有啥需求,请联系站长!


该杂文来自: Excel杂文

上一篇:在Excel中使用SUMIF函数和COUNTIF函数跨表求满足

下一篇:禁止修改Excel当前工作薄所有工作表单元格数据的V

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计