在Excel中会经常会将单元格内的数据分割到多列中,我们可以用excel的分列功能。实际上,用公式也能实现分列的功能。

 一、固定宽度分列

如下图,需要将A1单元格按照每1个字符分列,A5单元格按每2个字符分列。

Excel函数实例教程——单元格数据分列-趣帮office教程网

①在A2单元格输入=MID($A$1,COLUMN(A1),1),右拉实现按照每1个字符分列

②在A6单元格输入=MID($A$5,COLUMN(A1)*2-1,2),右拉实现按每2个字符分列

※在此介绍一下column函数:得到指定单元格的列号

语法:Column(单元格引用)

例子:=COLUMN(b1) 结果是2,即该单元格在第2列

回到文章开始时的例子:

例①中,在A2单元格输入=MID($A$1,COLUMN(A1),1),右拉B2单元格变为=MID($A$1,COLUMN(b1),1),此时,A2单元格的值实际为=MID($A$1,1,1),即是从A1取第一个字符,得到A。

B2单元格实际为=MID($A$1,2,1),即是从A1单元格第二个字符开始取1个字符,得到B,以此类推,得到C、D、E、F、G、H

例②中,在A6单元格输入=MID($A$5,COLUMN(A1)*2-1,2),A6实际为=MID($A$5,1*2-1,2),即从A5单元格第一个字符开始取2个字符,得到“安徽”。

右拉,B6单元格变为=MID($A$5,COLUMN(B1)*2-1,2),实际值为=MID($A$5,2*2-1,2),即从A5单元格第3个字符开始取2个字符,得到“北京”,以此类推~~~

▲在A2单元格输入=MID($A$1,COLUMN(A1),1)时,用的是绝对引用:$A$1,否则直接用A1,右拉B2单元格变为=MID(B1,COLUMN(B1),1),无法实现我们想要的结果。

二、特定分隔符分列

比如下图中,以“、”为分隔号,对数据进行分列

Excel函数实例教程——单元格数据分列-趣帮office教程网

我们可以用TRIM MID SUBSTITUTE REPT的组合公式:

在B2中输入:

=TRIM(MID(SUBSTITUTE($A2,"、",REPT(" ",20)),20*COLUMN(A1)-19,20))

【解析】

1、利用SUBSTITUTE REPT组合,将分隔符顿号“、”替换成固定长度的空格,将各“列”数据距离拉大,结果如下:

"枇杷叶 20个空格苦杏仁 20个空格川贝母 20个空格大黄 20个空格"

2、MID函数取出含有空格的各“列”的值

第1段从第20*1-19即第1个字符起,取20个字符:

{"枇杷叶_________________"} ——》"枇杷叶 17个空格"

第2段从第20*2-19即第21个字符起,取20个字符:

{"___苦杏仁______________"} ——》"3个空格 苦杏仁 14个空格"

第3段从第41个字符起,取20个字符:

{"______川贝母___________"} ——》"6个空格 川贝母 11个空格"

第4段从61个字符起,取20个字符:

{"_________大黄_________"} ——》"9个空格 大黄 9个空格"

这样,得到每一列数据和“空格”的组合文本。

3、利用TRIM函数将空格去掉。

※本例涉及的有关函数

①Substitute函数

简介:用新文本替换指定内容的旧文本

语法:Substitute(原始文本, 旧文本, 新文本, 替换第几个旧文本)

1. 原始文本 可以是某一个具体文本,也可以是某一个单元格

2. 旧文本 是指原始文本中将被替换掉的文本

3. 新文本 是指用来替换旧文本的文本

4. 替换第几个旧文本 是指新文本将替换第几次出现的旧文本,如果省略,则替换所有旧文本

示例:=SUBSTITUTE("中华人民共和国万岁","中华人民共和国","世界人民大团结") 结果为:世界人民大团结万岁

②Trim函数

简介:清除文本中的所有空格(单词之间的单个空格除外)

语法:Trim(文本)

1. 文本 需要清除空格的文本, 也可以是某一个单元格

结果: 将得到一个新的文本

注意:在文本中,首字符之前以及最末端字符之后的空格将全部清除

如果字符之间有连续多个空格,则保留一个空格

③rept函数:将文本重复一定次数

语法:REPT(text,number_times).

text:表示需要重复显示的文本

number_times:表示指定文本重复显示的次数

示例:

公式 =REPT("-",10)

说明 显示短划线 (-) 10 次。

结果 ----------