好久不见,我又来了。这几天越来越觉得,如果领导和员工谈梦想就不要说什么只要结果不要过程的话,会显得梦想很可笑。小小的吐槽一下,现在是北京时间2019年8月20日23:54:54,开始今天的码字。
以前一直觉得码字是很容易的,现在,对不起,我错了,码字真的很不容易。很多事情真的要自己经历过才有资格去说什么,想法可以随时随地迸现,但是想把它写出来真的是很难。我有些理解“批阅十载,增删五次”的感觉了,写出一篇优秀的教程真的很难,要反复斟酌字眼,还要保证逻辑通顺,不过写出一篇来还是很有成就感的。如果有和我一样想了解写作技巧的,不妨开始写起来,用笔也好用电脑也罢,开始把脑子里面的内容写出来,慢慢的就知道自己欠缺在哪里,自然也就能得到提升了,而且是各个方面的。
我前段时间换了新工作嘛,然后就遇到一个小问题,批量给电话替换星号,如图:
给手机号码加星号
这个问题我领导的办法是删了不要了,作为一个追求Excel“花里胡哨”的人,我表示我想留着它,然后我就网上找了几种办法,然后加上最近自己在学习VBA的内容,于是有了今天这篇《5种给手机号加星号的方法》。前四种比较简单,所以重点会放在我学习的VBA上面,因为是刚入门,大佬轻喷,给个建议(面子)可以。⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄
第一种:Ctrl+E
这种我的上上篇教程里面有说到,就是快速填充的快捷键,只需要在手机号旁边写一个例子,回车然后Ctrl+E快速填充,就完成了。
Ctrl+E
第二种:Replace
这种使用的是公式,包括后面的第三种第四种都是使用的函数,殊途同归,选择自己用着方便的就好。
Replace的功能是将一个字符串中的部分字符用另一个字符串替换,就像它的含义一样“替换”。使用方法呢,也很简单,=replace(旧数据,开始位置,替换字符个数,新数据),如图感受一下。
Replace演示
第三种:Substitute和Mid
这一种方式和第二种差不多,不过要比第二种繁琐一些,思路如下:
首先,替换函数substitute(需要替换的数据,其中旧的数据,替换后的新数据)
然后,提取函数mid(数据,开始位置,提取个数)得到旧数据中需要替换的数据串
最后,substitute(需要替换的数据,提取函数mid(数据,开始位置,提取个数),替换后的新数据)这样一个两个函数嵌套起来的意思就是:
看☞原始数据,还活着
-替换!
替换?
-是的,替换MID获取的内容
替换成什么?
-替换成新的数据
好哒~
就是写起来比较麻烦,尤其substitute完全记不住好嘛。ε=(´ο`*)))唉
第四种:Left+Right
这一种完全就是拼凑的种思路,左边提取3个字符,中间加上****,然后右边提取4个字符,之后就是一个完整的结果了。
=LEFT(手机号码,3)&"****"&RIGHT(手机号码,4)
第五种:录制宏
最后一种用到的是录制宏,真的很方便呢,坐好了,一个按钮就完成了,不用你会VBA也能会的。
录制宏
首先,先调出你的Excel的开发工具。文件-选项-自定义功能区-开发工具。
开发工具
然后,菜单栏就可以看到开发工具了,里面有个按钮叫做录制宏。
再然后,点击录制宏,给你的宏起一个名字,能够区分他是什么功能的名字最好。
再再然后,开始操作你的修改星号的步骤。我把整个的流程分成了三步。
第一步,在原始数据旁边的单元格,输入replace函数得到替换后的内容
第一步
Sub 函数() ' 函数 宏 ActiveCell.FormulaR1C1 = "=REPLACE(替换手机号!R[4]C[11],4,4,""****"")" '解释:这句话是说当前单元格内输入replace函数 End Sub
第二步,把替换后的内容粘贴到原始数据处
第二步
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
第三步,删除原始数据旁边的没用的结果
第三步
Sub 删除() ' 删除 宏 Sheets("Sheet1").Select Range("A2:A8").Select Selection.ClearContents '解释:删除A2:A8范围内的值,然后清空剪贴板 End Sub
做完以上三步,停止录制宏,这时候打开VB就可以看到一个完整的代码了。
如果不知道怎么理解代码,可以把步骤分成三步,分别录制,就像我上面贴出的代码一样,然后和完整的对比+百度,会利于理解。下面是我的截图:
步骤解析
最后,选择按钮控件,给他指定我们最后整理好的完整版的宏,就可以使用了。
插入按钮
给按钮指定宏
这么做其实还不够灵活,如果我的手机号旁边跟着其他的内容怎么办呢?不是会覆盖掉其他内容嘛,所以后来我就开了两个表格,其中一个方式辅助列,然后录制了宏,结果是好的,就是操作的时候需要光标定位到要变换的第一个手机号位置,不然粘贴出来的手机号会粘贴到光标定位的区域。
不过这样依旧不够,需要替换的数据少还好说,如果多的话,就很被动了,比如复制粘贴的数据区域,现在是写死的,不够灵活,就需要引入变量,然后这一部分我还没学明白就先不说,等我学明白了,然后专门整理一份这个功能的完整的思路及工具。
现在是北京时间2019年8月21日01:32:44,差不多就写到这里了,如果有更好的办法欢迎留言,我就先睡觉了,早起还要搬砖养活自己,88~
啊,贴一下我整理完的代码哈。仅供不会VBA的小伙伴理解使用,不要直接套用,因为里面还有些东西是不灵活的,无法直接套用。
Sub 超级完整() ' ' 超级完整 宏 ' Dim i For i = 2 To 8 Step 1 Sheets("Sheet1").Select Range("A" & i).Select ActiveCell.FormulaR1C1 = "=REPLACE(替换手机号!R[4]C[11],4,4,""****"")" '在当前单元格内输入等号之后的内容 Next i Range("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").Select End Sub