「VBA」五种给手机号加星号的方法

好久不见,我又来了 。这几天越来越觉得,如果领导和员工谈梦想就不要说什么只要结果不要过程的话 , 会显得梦想很可笑 。小小的吐槽一下,现在是北京时间2019年8月20日23:54:54,开始今天的码字 。
以前一直觉得码字是很容易的,现在,对不起,我错了,码字真的很不容易 。很多事情真的要自己经历过才有资格去说什么,想法可以随时随地迸现,但是想把它写出来真的是很难 。我有些理解“批阅十载,增删五次”的感觉了,写出一篇优秀的教程真的很难,要反复斟酌字眼,还要保证逻辑通顺 , 不过写出一篇来还是很有成就感的 。如果有和我一样想了解写作技巧的,不妨开始写起来,用笔也好用电脑也罢,开始把脑子里面的内容写出来 , 慢慢的就知道自己欠缺在哪里,自然也就能得到提升了,而且是各个方面的 。
我前段时间换了新工作嘛,然后就遇到一个小问题,批量给电话替换星号 , 如图:

「VBA」五种给手机号加星号的方法

给手机号码加星号
这个问题我领导的办法是删了不要了,作为一个追求Excel“花里胡哨”的人,我表示我想留着它,然后我就网上找了几种办法 , 然后加上最近自己在学习VBA的内容,于是有了今天这篇《5种给手机号加星号的方法》 。前四种比较简单,所以重点会放在我学习的VBA上面,因为是刚入门,大佬轻喷,给个建议(面子)可以 。?(? ???ω??? ?)?
【「VBA」五种给手机号加星号的方法】第一种:Ctrl E
这种我的上上篇教程里面有说到,就是快速填充的快捷键,只需要在手机号旁边写一个例子,回车然后Ctrl E快速填充 , 就完成了 。
「VBA」五种给手机号加星号的方法

Ctrl E
第二种:Replace
这种使用的是公式,包括后面的第三种第四种都是使用的函数,殊途同归,选择自己用着方便的就好 。
Replace的功能是将一个字符串中的部分字符用另一个字符串替换,就像它的含义一样“替换” 。使用方法呢,也很简单,=replace(旧数据 , 开始位置,替换字符个数,新数据),如图感受一下 。
「VBA」五种给手机号加星号的方法

Replace演示
第三种:Substitute和Mid
这一种方式和第二种差不多,不过要比第二种繁琐一些 , 思路如下:
首先,替换函数substitute(需要替换的数据,其中旧的数据 , 替换后的新数据)
然后,提取函数mid(数据,开始位置 , 提取个数)得到旧数据中需要替换的数据串
最后,substitute(需要替换的数据,提取函数mid(数据,开始位置 , 提取个数) , 替换后的新数据)这样一个两个函数嵌套起来的意思就是:
看?原始数据,还活着
-替换!
替换?
-是的,替换MID获取的内容
替换成什么?
-替换成新的数据
好哒~
就是写起来比较麻烦,尤其substitute完全记不住好嘛 。ε=(′ο`*)))唉
第四种:Left Right
这一种完全就是拼凑的种思路,左边提取3个字符,中间加上**** , 然后右边提取4个字符,之后就是一个完整的结果了 。
=LEFT(手机号码,3)&"****"&RIGHT(手机号码,4)
第五种:录制宏
最后一种用到的是录制宏,真的很方便呢,坐好了,一个按钮就完成了,不用你会VBA也能会的 。
「VBA」五种给手机号加星号的方法

录制宏
首先 , 先调出你的Excel的开发工具 。文件-选项-自定义功能区-开发工具 。
「VBA」五种给手机号加星号的方法

开发工具
然后,菜单栏就可以看到开发工具了,里面有个按钮叫做录制宏 。
「VBA」五种给手机号加星号的方法

再然后,点击录制宏,给你的宏起一个名字,能够区分他是什么功能的名字最好 。
「VBA」五种给手机号加星号的方法

再再然后 , 开始操作你的修改星号的步骤 。我把整个的流程分成了三步 。
第一步,在原始数据旁边的单元格,输入replace函数得到替换后的内容
「VBA」五种给手机号加星号的方法

第一步
Sub 函数()' 函数 宏 ActiveCell.FormulaR1C1 = "=REPLACE(替换手机号!R[4]C[11],4,4,""****"")"'解释:这句话是说当前单元格内输入replace函数End Sub
第二步,把替换后的内容粘贴到原始数据处
「VBA」五种给手机号加星号的方法

第二步
Sub 复制()' 复制 宏 Range("A2:A8").Select Selection.Copy Sheets("替换手机号").Select Range("L6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False'解释:选中A2:A8范围复制,选择性粘贴到L6单元格End Sub
第三步 , 删除原始数据旁边的没用的结果
「VBA」五种给手机号加星号的方法

第三步
Sub 删除()' 删除 宏 Sheets("Sheet1").Select Range("A2:A8").Select Selection.ClearContents'解释:删除A2:A8范围内的值,然后清空剪贴板End Sub
做完以上三步,停止录制宏,这时候打开VB就可以看到一个完整的代码了 。
如果不知道怎么理解代码,可以把步骤分成三步,分别录制,就像我上面贴出的代码一样,然后和完整的对比 百度,会利于理解 。下面是我的截图:
「VBA」五种给手机号加星号的方法

步骤解析
最后,选择按钮控件,给他指定我们最后整理好的完整版的宏,就可以使用了 。
「VBA」五种给手机号加星号的方法

插入按钮
「VBA」五种给手机号加星号的方法

给按钮指定宏
这么做其实还不够灵活,如果我的手机号旁边跟着其他的内容怎么办呢?不是会覆盖掉其他内容嘛,所以后来我就开了两个表格,其中一个方式辅助列,然后录制了宏,结果是好的,就是操作的时候需要光标定位到要变换的第一个手机号位置,不然粘贴出来的手机号会粘贴到光标定位的区域 。
不过这样依旧不够,需要替换的数据少还好说 , 如果多的话,就很被动了,比如复制粘贴的数据区域,现在是写死的,不够灵活,就需要引入变量,然后这一部分我还没学明白就先不说,等我学明白了,然后专门整理一份这个功能的完整的思路及工具 。
现在是北京时间2019年8月21日01:32:44,差不多就写到这里了,如果有更好的办法欢迎留言,我就先睡觉了,早起还要搬砖养活自己,88~
啊,贴一下我整理完的代码哈 。仅供不会VBA的小伙伴理解使用,不要直接套用,因为里面还有些东西是不灵活的,无法直接套用 。
Sub 超级完整()'' 超级完整 宏' Dim iFor i = 2 To 8 Step 1Sheets("Sheet1").Select Range("A" & i).Select ActiveCell.FormulaR1C1 = "=REPLACE(替换手机号!R[4]C[11],4,4,""****"")" '在当前单元格内输入等号之后的内容 Next iRange("A2:A8").Select Selection.Copy Sheets("替换手机号").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False '选择性粘贴为数值 Sheets("Sheet1").Select Range("A2:A8").Select Application.CutCopyMode = False '清空剪贴板Selection.ClearContents '清除内容Sheets("替换手机号").Select Range("L6").SelectEnd Sub

相关经验推荐