转自:Excel之家ExcelHome

小伙伴们好啊,今天和大家分享一个数据拆分的实例。

先来看数据源:

图片中的A列是从系统导出的信息,其中包含项目名、分期、标段以及房间号,每一项之间都有一个“-”隔开。

接下来,咱们用不同的方法将这些内容分别拆分到右侧各列内,看看这些方法你都会了吗。

方法一 分列:

分列的优点是各版本均可使用,操作简单效率高。

缺点是数据源变化后,结果不能自动更新,需要重新分列处理。

方法二 快速填充:

快速填充适合处理规律性比较高的数据,优点是操作便捷,缺点是数据源变化后,结果同样不能自动更新,需要重新处理。而且在2013以前版本中不可用。

方法三 Power Query:

此方法操作简单,而且在数据源发生变化或是增加数据后,只要右键刷新一下就好,不需要重复操作。

使用Excel 2010或是2013的小伙伴,可以通过安装Power Query插件实现,2016及以上版本的就是内置功能了。

方法四 函数公式:

B2单元格输入以下公式,向下向右拖动。

=TRIM(MID(SUBSTITUTE($A2,"-",REPT(" ",99)),COLUMN(A1)*99-98,99))

使用函数公式,能够在数据源变化后自动更新结果。缺点是编辑比较复杂,而且在数据量大的情况下,计算效率比较低。

下面咱们简单说说这个公式的意思:

1、REPT函数的作用是按照给定的次数重复显示文本,REPT(" ",99)部分也就是将" "(空格)重复99次。

2、SUBSTITUTE函数的作用是在文本字符串中用新字符串替代旧字符串。

SUBSTITUTE($A2,"-", REPT(" ",99))的意思是将$A2单元格中的字符"-",都替换成99个空格,这样做的目的就是相当于将各段字符之间的距离给拉宽了。

3、COLUMN(A1)*99-98部分,由于COLUMN函数的参数A1使用了相对引用。在公式向右复制时,公式会变成:

COLUMN(B1)*99-98

COLUMN(C1)*99-98….

得到的结果是1,100,199…..这样的一个递增序列,作为MID函数的参数。

4、MID 函数用于返回文本字符串中从指定位置开始的特定数目的字符。

MID(SUBSTITUTE($A2,"-",REPT(" ",99)),COLUMN(A1)*99-98,99)

也就是对SUBSTITUTE($A2,"-", REPT(" ",99))返回的结果分别从第1位、第100位、第199位开始截取,截取的长度为99个字符长度。

5、最后用TRIM函数清除文本中多余的空格,得到相应的科目内容。

好了,今天分享的内容就是这些吧,祝小伙伴们周末好心情!

图文作者:张楠 老祝

相关文章