打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
《神奇的VBA》编程:批量清除多个字符

------ 需求案例------ 

一次性清除A1:A9单元格区域中不需要的字符。如:-,/,*等字符。

本篇神奇的VBA提供3种思路。 

-----思路1------ 

遍历单元格,并嵌套使用Replace函数清除不必要的字符。

Sub 清除字符思路1()Dim str As StringDim cell As RangeFor Each cell In Range("A1:A9") str = Replace(Replace(Replace(cell, "/", "-"), "*", "-"), "-", "") cell = strNextEnd Sub

注意:很遗憾的VBA中的Replace函数不能同时对多种字符集中删除,只能使用嵌套的方式删除!

-----思路2------ 

将不需要的字符放入数组中, 遍历单元格区域同时遍历数组依次删除不必要的字符。

Sub 清除字符思路2()arr = Array("/", "-", "*") '数组的另一种快捷写法arr = [{"/","-","*"}]Dim str As StringDim cell As RangeFor Each cell In Range("A1:A9") str = cell.Text For Each e In arr str = Replace(str, e, "") Next cell = strNextEnd Sub

注意:思路2跟思路1中的代码其实是换汤不换药,无非是将字符统一放入数组,这样减少Replace的嵌套。 《神奇的VBA》插件对数组有详细的介绍。 

-----思路3------ 

借助外部正则表达式集中去除多个字符。 

Sub 清除字符思路3()Dim RegExp As ObjectDim rng As Range, cell As Range
'此处定义正则表达式Set RegExp = CreateObject("vbscript.regexp")RegExp.Pattern = "[/-*]"RegExp.Global = TrueRegExp.IgnoreCase = True
'此处指定查找范围Set rng = ActiveSheet.Range("A1")
'遍历查找范围内的单元格For Each cell In rng Set Matches = RegExp.Execute(cell.Value) If Matches.Count >= 1 Then' Set Match = Matches(0) cell.Value = RegExp.Replace(cell.Value, "#") End IfNextSet RegExp = NothingEnd Sub

正则表达式跟字典一样都不属于Excel VBA的自带功能,需要绑定才能使用VB脚本中的正则表达式功能。上面例子中,使用CreateObject绑定正则, 可查阅《神奇的VBA》中的字典方法了解相关功能。我本人不希望职场人多使用正则,更希望职场人有一个规范的表格数据。 

-----结语------ 

本篇的分享就到这里!上面三种需求场景的VBA代码实现方法具有一定的通用性,职场人可以直接拿来稍微修改即可为你所用。 
如果觉得本篇主题对您的工作有帮助,还请
关注
点赞收藏
转发至朋友圈
点击“在看”
分享给更多的人

 ------   更多文章   ------
《神奇的VBA》编程:禁止修改Excel工作表名称
《神奇的VBA》编程:监控表格单元格值的变化
《神奇的VBA》编程:提取身份证号码中的性别信息
《神奇的VBA》编程:随机生成彩票数据
《神奇的VBA》编程:报表插入空白行
《神奇的VBA》编程:工作表数据的拆分-001
《神奇的VBA》编程:工作表数据的拆分-002
Power Click插件发布-开放下载!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
vba正则表达式入门
VBA学习与实践——自定义字符和数字提取函数
Excel VBA【案例分享】正则表达式提取中文字符/五笔字型编码文本整理
咕吧课堂:excel vba正则表达式就是这么玩的
js string 函数大全
VBA变量名2动态变量
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服