前阵子带大家复习了按分隔符拆分单元格的各种方式,涵盖了快捷键、分列、PQ 等多种解法。
之所以当时没用公式,是因为公式有点难度,若非必须,完全有更简单的方法可替代。但有宝子留言说就是需要公式解法,别的就是不行不行。
那今天我就教一个分列的套路公式。觉得理解太难的话,保存套用就行。
案例:将下图 1 中 A 列的食品按分隔符拆分,结果填写到右侧的单元格中。
效果如下图 2 所示。
解决方案:1. 在 B2 单元格中输入以下公式:
=TRIM(MID(SUBSTITUTE($A2,"/",REPT(" ",50)),COLUMN(A1)*50-49,50))
2. 向右向下拖动,复制公式。
公式释义:
REPT(" ",50):生成 50 个连续的空格;因为要拆分出来的每段字符数都不超过 50,所以这个数值足够大了;
SUBSTITUTE($A2,"/",...):将 A2 单元格中的所有“/”都替换成 50 个空格,也就是说,单元格中的分隔符由原来的“/”变成了 50 个空格;
MID(...,COLUMN(A1)*50-49,50):
mid 函数的作用是返回文本字符串中从指定位置开始的特定数目的字符;
语法为 mid(要提取字符的文本字符串,要提取的第一个字符的位置,从文本中返回字符的个数);
第二个参数中的 COLUMN(A1) 返回 A1 列的列号,即 1;COLUMN(A1)*50-49 的结果就变成 1*50-49=1;也就是从第 1 个字符开始提取;随着公式向右拖动,COLUMN(A1) 的结果会依次递增,于是变成 2*50-49=51;3*50-49=101;因为需要提取的每段字符都不超过 50 个,所以按每 50 为一个分界点足够将每段字符提取出来了;
第三个参数为 50,表示总共提取 50 个字符;
至此,已经将每段字符都按分隔符提取到不同单元格中了,只是因字符长短不同,前后会有数量不等的空格;
所以最后在外面包一个 TRIM 函数,去除字符前后的所有空格