vba replace函数_「VBA」五种给手机号加星号的方法

好久不见,我又来了。这几天越来越觉得,如果领导和员工谈梦想就不要说什么只要结果不要过程的话,会显得梦想很可笑。小小的吐槽一下,现在是北京时间2019年8月20日23:54:54,开始今天的码字。

以前一直觉得码字是很容易的,现在,对不起,我错了,码字真的很不容易。很多事情真的要自己经历过才有资格去说什么,想法可以随时随地迸现,但是想把它写出来真的是很难。我有些理解“批阅十载,增删五次”的感觉了,写出一篇优秀的教程真的很难,要反复斟酌字眼,还要保证逻辑通顺,不过写出一篇来还是很有成就感的。如果有和我一样想了解写作技巧的,不妨开始写起来,用笔也好用电脑也罢,开始把脑子里面的内容写出来,慢慢的就知道自己欠缺在哪里,自然也就能得到提升了,而且是各个方面的。

我前段时间换了新工作嘛,然后就遇到一个小问题,批量给电话替换星号,如图:

2d982417166192654f7cae795bfa504f.png

给手机号码加星号

这个问题我领导的办法是删了不要了,作为一个追求Excel“花里胡哨”的人,我表示我想留着它,然后我就网上找了几种办法,然后加上最近自己在学习VBA的内容,于是有了今天这篇《5种给手机号加星号的方法》。前四种比较简单,所以重点会放在我学习的VBA上面,因为是刚入门,大佬轻喷,给个建议(面子)可以。⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄

第一种:Ctrl+E

这种我的上上篇教程里面有说到,就是快速填充的快捷键,只需要在手机号旁边写一个例子,回车然后Ctrl+E快速填充,就完成了。

595ed353c66e5e0534c3a5339d4008ea.gif

Ctrl+E

第二种:Replace

这种使用的是公式,包括后面的第三种第四种都是使用的函数,殊途同归,选择自己用着方便的就好。

Replace的功能是将一个字符串中的部分字符用另一个字符串替换,就像它的含义一样“替换”。使用方法呢,也很简单,=replace(旧数据,开始位置,替换字符个数,新数据),如图感受一下。

a36e2880ba3fc95fb0ae59d96f83ea7f.gif

Replace演示

第三种:Substitute和Mid

这一种方式和第二种差不多,不过要比第二种繁琐一些,思路如下:

首先,替换函数substitute(需要替换的数据,其中旧的数据,替换后的新数据)

然后,提取函数mid(数据,开始位置,提取个数)得到旧数据中需要替换的数据串

最后,substitute(需要替换的数据,提取函数mid(数据,开始位置,提取个数),替换后的新数据)这样一个两个函数嵌套起来的意思就是:

看☞原始数据,还活着

-替换!

替换?

-是的,替换MID获取的内容

替换成什么?

-替换成新的数据

好哒~

就是写起来比较麻烦,尤其substitute完全记不住好嘛。ε=(´ο`*)))唉

第四种:Left+Right

这一种完全就是拼凑的种思路,左边提取3个字符,中间加上****,然后右边提取4个字符,之后就是一个完整的结果了。

=LEFT(手机号码,3)&"****"&RIGHT(手机号码,4)

第五种:录制宏

最后一种用到的是录制宏,真的很方便呢,坐好了,一个按钮就完成了,不用你会VBA也能会的。

b8bece604875a42bafc10863e370e67e.gif

录制宏

首先,先调出你的Excel的开发工具。文件-选项-自定义功能区-开发工具。

da06327cfb83577823284a1ba6a2b09d.gif

开发工具

然后,菜单栏就可以看到开发工具了,里面有个按钮叫做录制宏。

b412aca109b6247b3558da00f397a03f.png

再然后,点击录制宏,给你的宏起一个名字,能够区分他是什么功能的名字最好。

d7a12b452c8768fd95c18a539932610e.png

再再然后,开始操作你的修改星号的步骤。我把整个的流程分成了三步。

第一步,在原始数据旁边的单元格,输入replace函数得到替换后的内容

fe8d91549c8b4996f8747271a23196c7.gif

第一步

Sub 函数()' 函数 宏 ActiveCell.FormulaR1C1 = "=REPLACE(替换手机号!R[4]C[11],4,4,""****"")"'解释:这句话是说当前单元格内输入replace函数End Sub

第二步,把替换后的内容粘贴到原始数据处

f60797a86ffae87cf08ffa86edc89686.gif

第二步

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

第三步,删除原始数据旁边的没用的结果

165bbee3fc6688d213283165e899a93d.gif

第三步

Sub 删除()' 删除 宏 Sheets("Sheet1").Select Range("A2:A8").Select Selection.ClearContents'解释:删除A2:A8范围内的值,然后清空剪贴板End Sub

做完以上三步,停止录制宏,这时候打开VB就可以看到一个完整的代码了。

如果不知道怎么理解代码,可以把步骤分成三步,分别录制,就像我上面贴出的代码一样,然后和完整的对比+百度,会利于理解。下面是我的截图:

2c154f3ce4c78c0dd73e14cba6a20873.png

步骤解析

最后,选择按钮控件,给他指定我们最后整理好的完整版的宏,就可以使用了。

76c2cc36ff94eb1d5a668e05b4588b12.png

插入按钮

9274aea56638cc8ec7730bd74e636fcc.png

给按钮指定宏

这么做其实还不够灵活,如果我的手机号旁边跟着其他的内容怎么办呢?不是会覆盖掉其他内容嘛,所以后来我就开了两个表格,其中一个方式辅助列,然后录制了宏,结果是好的,就是操作的时候需要光标定位到要变换的第一个手机号位置,不然粘贴出来的手机号会粘贴到光标定位的区域。

不过这样依旧不够,需要替换的数据少还好说,如果多的话,就很被动了,比如复制粘贴的数据区域,现在是写死的,不够灵活,就需要引入变量,然后这一部分我还没学明白就先不说,等我学明白了,然后专门整理一份这个功能的完整的思路及工具。

现在是北京时间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").SelectEnd Sub
编程世界里只存在两种基本元素,一个是数据,一个是代码。编程世界就是在数据和代码千丝万缕的纠缠中呈现出无限的生机和活力。     数据天生就是文静的,总想保持自己固有的本色;而代码却天生活泼,总想改变这个世界。      你看,数据代码间的关系与物质能量间的关系有着惊人的相似。数据也是有惯性的,如果没有代码来施外力,她总保持自己原来的状态。而代码就象能量,他存在的唯一目的,就是要努力改变数据原来的状态。在代码改变数据的同时,也会因为数据的抗拒而反过来影响或改变代码原有的趋势。甚至在某些情况下,数据可以转变为代码,而代码却又有可能被转变为数据,或许还存在一个类似E=MC2形式的数码转换方程呢。然而,就是在数据和代码间这种即矛盾又统一的运转中,总能体现出计算机世界的规律,这些规律正是我们编写的程序逻辑。     不过,由于不同程序员有着不同的世界观,这些数据和代码看起来也就不尽相同。于是,不同世界观的程序员们运用各自的方法论,推动着编程世界的进化和发展。       众所周知,当今最流行的编程思想莫过于面向对象编程的思想。为什么面向对象的思想能迅速风靡编程世界呢?因为面向对象的思想首次把数据和代码结合成统一体,并以一个简单的对象概念呈现给编程者。这一下子就将原来那些杂乱的算法与子程序,以及纠缠不清的复杂数据结构,划分成清晰而有序的对象结构,从而理清了数据与代码在我们心中那团乱麻般的结。我们又可以有一个更清晰的思维,在另一个思想高度上去探索更浩瀚的编程世界了。     在五祖弘忍讲授完《对象真经》之后的一天,他对众弟子们说:“经已讲完,想必尔等应该有所感悟,请各自写个偈子来看”。大弟子神秀是被大家公认为悟性最高的师兄,他的偈子写道:“身是对象树,心如类般明。朝朝勤拂拭,莫让惹尘埃!”。此偈一出,立即引起师兄弟们的轰动,大家都说写得太好了。只有火头僧慧能看后,轻轻地叹了口气,又随手在墙上写道:“对象本无根,类型亦无形。本来无一物,何处惹尘埃?”。然后摇了摇头,扬长而去。大家看了慧能的偈子都说:“写的什么乱七八糟的啊,看不懂”。师父弘忍看了神秀的诗偈也点头称赞,再看慧能的诗偈之后默然摇头。就在当天夜里,弘忍却悄悄把慧能叫到自己的禅房,将珍藏多年的软件真经传授于他,然后让他趁着月色连夜逃走...     后来,慧能果然不负师父厚望,在南方开创了禅宗另一个广阔的天空。而慧能当年带走的软件真经中就有一本是《JavaScript真经》!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值