ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > 函数与公式 > 【公式解析系列】之数据按分隔符“分列”函数解法

【公式解析系列】之数据按分隔符“分列”函数解法

作者:绿色风 分类: 时间:2022-08-17 浏览:292
楼主
gouweicao78
【声明】请尊重原创版权!未经允许,不得转载!
数据按固定分割符号“分列”是一项常用的基础应用功能之一,通过函数公式的也能解决,一般看数据情况而定,比如简单的“2列”数据像"数据1,姓名2",一般的LEFT或MID、REPLACE等与FIND配合即可解决,但是有的数据比较多“列”的比如"1,2,zhangsan,北京,Exceltip"等,如图:

 
一次次FIND恐怕就很累人了,于是就有了一个TRIM+MID+SUBSTITUTE+REPT的【必杀技】公式:
  1. =TRIM(MID(SUBSTITUTE($A2,",",REPT(" ",50)),50*COLUMN(A:A)-49,50))
【解析】
1、挑拨离间:利用SUBSTITUTE+REPT组合,将分隔符——逗号替换成固定长度的空格,将各“列”数据距离拉大,结果如下:

2、各个击破:MID函数取出含有空格的各“列”的值
第1段从第50*1-49即第1个字符起,取50个字:{"1                                                 "}——"1+49个空格"
第2段从第50*2-49即第51个字符起,取50个字:{" 2                                                "}——"+1个空格2+48个空格"
第3段从……即第101个字符起,取50个字:{"  zhangsan                                        "}——"+2个空格zhangsan+40个空格"
以此类推,得到每一列数据和“空格”的组合文本。
3、去伪存真:这些空格都不是我们要的,利用TRIM函数特性,即可将它们去除。

【疑问】这REPT的50个空格是怎么定的?换做其它数行吗?
还是这个例子"1,2,zhangsan,北京,Exceltip"——共有24个字符,最长的一“列”是zhangsan和Exceltip,都8个字的。
我们来测试一下:
1、是否空格数只要比最长“列”多就可以?我们用9来代替,测试公式:
=TRIM(MID(SUBSTITUTE($A3,",",REPT(" ",9)),9*COLUMN(A:A)-8,9))
得到结果:
12zhangsan北京Excelt

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap