当前位置:首页 > VBA&EXCEL > 全了,SUBSTITUTE函数常用套路集合!

全了,SUBSTITUTE函数常用套路集合!

九天狼5年前 (2019-05-18)VBA&EXCEL3313

SUBSTITUTE函数是Excel最常用的文本函数之一,在数据分析过程中,常用于字符串的整理和清洗。

SUBSTITUTE函数的基础语法是:

SUBSTITUTE(要替换的文本,旧文本,新文本,[替换第几个])

最后一个参数,[替换第几个], 是可以省略的。

今天星光通过几个小栗子,和大家分享下SUBSTITUTE函数的常用技巧和套路。


1,将数据中的某个值替换为另一个值

比如将B列数据里的二班,替换为一班。

C2输入公式,并向下复制填充:

=SUBSTITUTE(B2,"二班","一班")

这里没啥好解释的了,就是将B列中单元格中的“二班”全部替换为“一班”。


2,隐藏手机号的中间5位

C2输入公式,并向下复制填充:

=SUBSTITUTE(B2,MID(B2,4,5),"*****")

先使用MID函数取得B列号码中的中间五位,再用字符串“*****”替换掉这部分内容。


3,对含单位的数据求和

B7输入公式:

=SUMPRODUCT(SUBSTITUTE(B2:B6,"人",)*1)

先用SUBSTITUTE替换掉B列单元格中的“人”,得到文本型数字,乘以1后转换成可以计算的数值,再用SUMPRODUCT函数进行求和。


3,数据分列,将B列数据按顿号进行分列。

C2单元格输入公式横向拖动,并向下复制填充。

=TRIM(MID(SUBSTITUTE($B2,"、",REPT(" ",100)),COLUMN(A1)*100-99,100))

REPT(" ",100) 

先使用REPT函数,将空格重复100次,得到100个空格。

SUBSTITUTE($B2,"、",REPT(" ",100))

使用SUBSTITUTE函数将姓名中的的间隔符号顿号替换为100个空格。

MID(SUBSTITUTE($B2,"、",REPT(" ",100)),COLUMN(A1)*100-99,100) 

再使用MID函数,依次从带有空格的新字符串中的第1、第101、第201位……截取长度为100的字符。

这样得到的字符串是带有多余空格的,因此再使用TRIM函数将多余空格删除掉。


5,混合文本中,计算人数个数

B2公式:

=LEN(A2)-LEN(SUBSTITUTE(A2,"、",))+1

LEN(A2)取得A2字符串的长度。

LEN(SUBSTITUTE(A2,"、",))+1,替换掉人名之间的间隔符,也就是顿号,再用LEN计算该值的长度,最后加1,是因为最后一个人名没有顿号。

用A2数值原有的长度减去被替换掉人名之间间隔符的长度,也就是人名的个数。


6,混合文本中,计算数值最大值。

B2数组公式:

=MAX((SUBSTITUTE(A2,ROW($1:$98),)<>A2)*ROW(1:98))

SUBSTITUTE(A2,ROW($1:$98),)<>A2

依次将数值1到98从A2替换为空,然后把替换后的结果和被替换值(1-98)进行比较  ,如果不相等,则证明A2中存在该数值。

最后将上述部分公式的运算结果,也就是逻辑值TRUE和FALSE,乘以被替换的值(1-98),用MAX函数从中取得最大值。


7,计算某个值在某个范围的最大连续次数

B2数组公式:

=MAX((SUBSTITUTE(PHONETIC(A2:A9),REPT("A",ROW(1:9)),)<>PHONETIC(A2:A9))*ROW(1:9))

PHONETIC(A2:A9)

将A2:A9的文本值黏合成一个值,以便SUBSTITUTE函数进行操作。

REPT("A",ROW(1:9))

把“A”重复1到9次。

SUBSTITUTE(PHONETIC(A2:A9),REPT("A",ROW(1:9)),)<>PHONETIC(A2:A9) 

思路回到示例6,SUBSTITUTE函数将REPT函数的运算结果,在PHONETIC函数的运算结果里替换掉,然后和PHONETIC函数的原值进行比较。如果后者存在替换值,则被替换掉,此时和原值不相等,返回FALSE,否则返回TRUE。

最后依然把上述公式返回的逻辑值TRUE和FALSE,分别乘以ROW(1:9),用MAX函数从中取得最大值。

如果内容对你有用,请花费几秒钟给个评论!

由于评论审核机制,可能您的评论暂时不可见,不影响查看回复可见的内容!

扫描二维码推送至手机访问。

版权声明:本文由云淡风轻Mr.Liu发布,如需转载请注明出处。

本文链接:https://nylmj.cn/post/90.html

相关文章

VBA常用小代码目录

VBA常用小代码目录

更多实用VBA小代码,请持续关注本公众号,设定中的小代码系列一共有108集哦~0,工作表处理:(点击目录,即可跳转到相关文章,不用回复关键词)VBA常用小代码001:一键生成带超链接的工作表目录VBA...

一大波常用函数公式,值得收藏!

一大波常用函数公式,值得收藏!

《一大波常用函数公式》微信推送后,同学们很是喜爱,今天重发,小伙伴们可以收藏一下,在日常工作中如果有类似的问题,拿来即用。话不多说,上菜——1、查找重复内容公式:=IF(COUNTIF(A:A,A2)...

如何用VBA代码查询两列数据差异?

如何用VBA代码查询两列数据差异?

我们今天和大家分享的内容是如何用VBA代码查询两列数据差异?照例打个响指,举个栗子。如上图所示,查询A列和C列的数据,提取出相同值、A列存在C列不存在的值、A列不存在C列存在的值……查询结果如下图所示...

VLOOKUP函数变态用法,74.2%的人不知道

VLOOKUP函数变态用法,74.2%的人不知道

大家好,我是星光。咱们今天继续聊聊VLOOKUP函数,有人问我为啥这么执迷于VLOOKUP函数,聊了一期又一期的。这个说来话就长了,这牵扯到俺的一点小隐私。和很多表亲一样,VLOOKUP是俺掌握的第一...

【Excel函数篇】21个最常用的日期函数组合

【Excel函数篇】21个最常用的日期函数组合

日期在数据分析中常常是极其重要的一个维度,今天整理了21个最常用的日期函数组合,分需~1、=TODAY()计算当前的系统日期2、=NOW()计算当前系统日期和时间3、= NOW()-TODAY()计算...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。