trim与substitutes的妙用: 从每组人员名单中将淘汰者一键清空, 拒绝无效加班!

Excel情报局

用案例讲Excel

探索挖掘分享Excel实用技能
SuperExcelMan
用1%的Excel基础搞定99%的职场难题
做一个超级实用的Excel公众号
Excel是门手艺玩转需要勇气
数万表格爱好者聚集地
前几天收到了这样的一个问题咨询
A2:B5区域是一份各组别人员初始成员名单,我们只简单的罗列了3个组的几个数据。每个组的各成员姓名以逗号","作为间隔,放置在同一个单元格中。而E3单元格展示的是已经被淘汰的人员名单,同样成员姓名以逗号","作为间隔符放置在了一个单元格中。

我们最终想要实现的是将每组被淘汰的人员从A2:B5中删除,留下剩余的成员。如G2:H5区域结果所示。



乍一看到这个问题,感觉也不是很难吧。如果想用动态数组的方法去做的话,小编首先想到的是substitute替换函数、substitutes批量替换函数、以及textsplit拆分函数。

理论上我们只需要将E3单元格的姓名拆分,作为需要替换的各个原字符,然后在B3:B5区域的初始成员姓名中找到这些需要替换的原字符,批量替换为空值就行了。


事实真的如同我们想象的这样简单吗?我们先试着这样做做,看看最终的结果与格式是否使是我们想要的。


首先使用TEXTSPLIT拆分函数:

=TEXTSPLIT(E3,,",")

以逗号","这个符号作为"行分隔符"(第3参数),将E3单元格"淘汰"的人员姓名字符串拆分到一列多行显示(简称分行)。




SUBSTITUTES函数是WPS表格中独有的函数,用于批量替换文本中的字符。


接下来使用SUBSTITUTES批量替换函数:

=SUBSTITUTES(B3:B5,TEXTSPLIT(E3,,","),"")

需要进行替换操作的文本字符串

B3:B5

要在字符串中被替换的旧文本

TEXTSPLIT(E3,,",")

被淘汰的人员名称列表

用于替换原字符串的新文本

""(空值)

进行完这一波操作后,B3:B5区域中被淘汰人员就删除了。但是,我们发现虽然留下的姓名非常正确,但是残留了很多多余的间隔符","逗号。有些在整体字符串开头、有些在结尾,还有些会在整体字符串的中间位置,连续出现的空格个数其实也不是一定的。要想删除多余的逗号,只保留"真正的"间隔符逗号,有点小麻烦



为了避免这些多余的逗号,我们需要重新制定解决方案


首先使用SUBSTITUTE函数将B3:B5区域初始成员姓名中的所有逗号替换为"空格"间隔符(即双引号""中间敲击一个空格" "来表示)
=SUBSTITUTE(B3:B5,","," ")

此时B3:B5区域每个单元格中姓名之间均已用"空格"代替作为了分隔符。



接下来使用TEXTSPLIT拆分函数:

=TEXTSPLIT(E3,,",")

将E3单元格淘汰人员姓名字符串,以行分隔符逗号进行分行,最后以数组溢出方式显示在一列多行不同单元格中(姓名列表格式)。




此时我们继续使用SUBSTITUTES函数进行一个批量替换操作:

=SUBSTITUTES(SUBSTITUTE(B3:B5,","," "),TEXTSPLIT(E3,,","),"")

需要进行替换操作的文本字符串

SUBSTITUTE(B3:B5,","," ")

用空格间隔符代替逗号后的待替换区域

要在字符串中被替换的旧文本

TEXTSPLIT(E3,,",")

被淘汰的人员名称列表

用于替换原字符串的新文本

""(空值)

进行完这一波操作后,B3:B5区域中的被淘汰人员就删除了。取而代之的是:多余的逗号变成了多余的空格



幸亏我们有一个去除字符串中多余空格的TRIM函数

去除首尾空格
TRIM函数会删除文本字符串开头和结尾的所有空格。

保留字符串间单个空格
对于文本字符串中间的多个空格,TRIM函数只会保留其中的单个空格,删除多余的连续空格。


根据上述介绍的TRIM函数去空格的规则,我们使用它:

=TRIM(SUBSTITUTES(SUBSTITUTE(B3:B5,","," "),TEXTSPLIT(E3,,","),""))

则每个单元格的"剩余成员"结果中,开头和结尾的空格会被删除,而姓名与姓名之间的空格只会保留1个,这样数据看上去就变得很整齐了。

接下来我们只需要再重复使用一次SUBSTITUTE函数:

=SUBSTITUTE(TRIM(SUBSTITUTES(SUBSTITUTE(B3:B5,","," "),TEXTSPLIT(E3,,","),""))," ",",")

将"剩余成员"中的空格字符再替换回逗号即可。

最后用HSTACK函数横向拼接"剩余成员"各行所对应的A3:A5组别数据就行了:

=HSTACK(A3:A5,TRIM(SUBSTITUTES(SUBSTITUTE(B3:B5,","," "),TEXTSPLIT(E3,,","),"")))
学习Excel/如果你没有天赋/那就一直重复/当你快到本能反应的时候/你的重复就是别人眼中的天赋/冲破捆绑/展翅翱翔/回顾关键内容/善用图片表达/学会建立联系/拓展深度广度/浓缩关键概念/应用到行动中/善于归纳总结/尝试进行分享

map遍历scan遍历reduce迭代

pivotby降维byrow函数let函数

pivotby函数groupby函数

对单元格部分文字内容替换 格式更改

借助这个函数!合并工作表简直太好用

比vlookup还强大的动态随机查询

根据起始序号与终止序号写入内容

regexp正则提取:款式&尺码多组提取

一个关于人口普查Excel户籍整理的问题

一个关于人口普查Excel户籍整理的问题2

regexp+vlookup根据简称查询全称

regexp+countif+filter根据全称查找简称

excel1秒批处理1000条混乱时间数据

Regexp这个大哥级函数人狠话不多

公式里常出现的"@"、"#"、"."是干啥的