如图A1是源数据,要求拆分成C列的样子,保留【】里面的内容,其它字符拆成单个字符。这样多条件字符拆分及提取最合适的就是正则函数,wps版如下:
=TOCOL(REGEXP(A1,"\[.*?\]|."))
公式思路:正则表达式 \[.*?\]|. 的含义是:\[.*?\]:匹配任何被方括号[]包围的内容,.*? 是一个非贪婪匹配,意味着它会匹配尽可能少的字符。
|:是逻辑“或”的意思,用来分隔不同的匹配条件。
.:匹配除换行符之外的任何单个字符。
这个正则表达式的目的是将方括号内的内容以及方括号外的每个字符都作为单独的匹配项。不过这是按着列拆分的,所以要用tocol转换成一列。
excel只有测试版本才有相似的函数,可以通过正常的函数嵌套解决,公式如下:
=DROP(REDUCE("",TEXTSPLIT(SUBSTITUTES(A1,{"[","]"},{"&[","]&"}),,"&",1),LAMBDA(m,n,VSTACK(m,IF(ISNUMBER(FIND("[",n)),n,MID(n,SEQUENCE(LEN(n)),1))))),1)
公式思路:通过增加分隔符&,再用textsplit拆分出来。形成了需要分隔的字符串和中括号的内容,再用reduce实现每个遍历用mid函数拆分出来。
本文暂时没有评论,来添加一个吧(●'◡'●)