别只会查找替换了! excel最新版本高级替换函数SUBSTITUTES用法
脚本之家
问题,要将内容里面的数字提取出来,并用*作为分隔符号连接起来。
内容比较有规律,并不难,跟来看看。
传统的思维,将空格替换掉,再将MM替换掉,最后将X替换成*,也就是3次替换。可以直接用Ctrl+H替换,也可以用3个SUBSTITUTE函数。
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,"X","*"),"MM",)," ",)
最新版本,有一个高级替换函数SUBSTITUTES,可以一次性将字符全替换掉。
=SUBSTITUTES(A2,{" ","MM","X"},{"","","*"})
2个替换函数语法几乎一样,唯一差别就是带S支持常量数组,能一次替换多个。
语法:
=SUBSTITUTES(内容,{"旧字符1","旧字符2","旧字符3"},{"新字符1","新字符2","新字符3"})
当然,还可以借助高版本的TEXTJOIN+REGEXP,这种就是通用的,不管里面混合着什么无关的字符,都可以搞定。
REGEXP将第2参数设置为[0-9]+,就是将所有数字提取出来。
=REGEXP(A2,"[0-9]+")
现在新增一些无关的字符,也不影响结果,比替换函数更智能。
而TEXTJOIN就可以按分隔符号合并数字,组合起来就可以。
=TEXTJOIN("*",1,REGEXP(A2,"[0-9]+"))
假如现在是要获取数字相乘的结果,而不是表达式。
用REGEXP提取出来的数字是文本格式,需要用--转换成数值格式。
而PRODUCT就是获取数字乘积的结果。同理,有的时候需要数字之和,就换成SUM即可。
=PRODUCT(--REGEXP(A2,"[0-9]+"))
有条件的话,都安装最新版本,这样写起公式更简单,更智能。