excel函数技巧:textsplit+vstack数据清洗式分列的利器-趣帮office教程网

如图,想要把文本内容中的批号、重量、数量分列出来,公式如下:

=TEXTSPLIT(A2,TEXTSPLIT(A2,VSTACK(SEQUENCE(10)-1,LEFT(ADDRESS(1,SEQUENCE(26),4,1),1),"-","."),,1),,1)

公式思路:textsplit函数是专门用于分列的函数,第一次用会按分列符号将文本分到几个单元格,但如果再次用就可以将第一次得到的文本作为分列符号,完成反向分列。这样就相当于把第一次分列时的符号变成了要保留下来的符号,不符合规定的数据因为作为分列符被去除掉啦。当然一定要选择第四参数,忽略掉空白单元格。

这样如果你想保留文本中的哪些字符就可以将它们列出来,再用vstack函数把它们组成一个数组。这其中与数字搭配的负号、小数点、与字符有关的横线连接号都可以保存下来。用了方便可以使用快速数组多保留一些,只要文本中不存在相同字符的就不影响结果。

本例中有两个快速数列保留的比较有代表性,那就是数字、和大写字母:

数字的表达式:SEQUENCE(10)-1,当然也可以用row函数或者column函数生成。

大写字母的表达式:LEFT(ADDRESS(1,SEQUENCE(26),4,1),1)。字母包括汉字也可以用code char函数生成。比如生成小写字母,可以这样写:

=CHAR(ROW(INDIRECT("a"&CODE("a")&":a"&CODE("z")))),

汉字大体可以这样写:

=CHAR(ROW(INDIRECT("a"&CODE("啊")&":a"&CODE("座")))),

好处就是不用再去记数字,非常直观。