设为首页收藏本站

嘻皮客娱乐学习网

 找回密码
 中文注册
搜索
打印 上一主题 下一主题
开启左侧

[Excel技巧] Excel中类似分列功能的公式

[复制链接]
跳转到指定楼层
楼主
发表于 2015-4-10 10:04:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在Excel中会经常用到分列功能,可以将同一单元格内的数据分割到多列中,非常方便。实际上,用公式也能实现类似分列的功能,如下面的一些公式。
    一、固定宽度分列
    在分列时的“文本分列向导”对话框中有两个选项,分别是“固定宽度”和“分隔符号”。假如A1单元格中包含文本“甲乙丙丁戊己”,分列的宽度相同。
    分列的宽度为1个字符时,在B1单元格中输入公式:
    =MID($A$1,COLUMN(A1),1)
    分列的宽度为2个字符时,在B2单元格中输入公式:
    =MID($A$1,COLUMN(A1)*2-1,2)
    分列的宽度为3个字符时,在B3单元格中输入公式:
    =MID($A$1,COLUMN(A1)*3-2,3)
    然后分别向右填充公式,即可得到按不同字符宽度分列后的数据。
   
   下面的多单元格数组公式将A1单元格中的数据按1-3个字符宽度“分列”到一行多列的内存数组中:
    =MID(A1,COLUMN(INDIRECT("1:"&LEN(A1))),1)
    =MID(A1,COLUMN(INDIRECT("1:"&LEN(A1)))*2-1,2)
    =MID(A1,COLUMN(INDIRECT("1:"&LEN(A1)))*3-2,3)
    选择一个一行多列的区域,如B5:G5,输入上述公式,然后按Ctrl+Shift+Enter,即可得到分列后的数据。
    二、按分隔符号分列
    例如A1单元格中包含用顿号分割的文本“足球、篮球、沙滩排球、羽毛球、网球、乒乓球”,用下面的公式将顿号分隔的数据分列到一行中:
    在某个单元格,如A4单元格输入公式:
    =TRIM(MID(SUBSTITUTE($A$1,"、",REPT(" ",LEN($A$1))),(COLUMN(A1)-1)*LEN($A$1)+1,LEN($A$1)))
    然后拖动填充柄向右填充公式即可。
   
    下面的多单元格数组公式将A1单元格中的文本“分列”到一个一行多列的区域:
    =TRIM(MID(SUBSTITUTE(A1,"、",REPT(" ",LEN(A1))),LEN(A1)*(COLUMN(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1,"、",""))+1))-1)+1,LEN(A1)))
    选择一个一行多列的区域,如B6:F6,输入上述公式,然后按Ctrl+Shift+Enter,即可得到分列后的数据。
    下面的数组公式将A1单元格中的数据“分列”到一个一行多列的内存数组,公式输入完毕后按Ctrl+Shift+Enter结束:
    =TRIM(MID(SUBSTITUTE(A1,"、",REPT(" ",LEN(A1))),LEN(A1)*(TRANSPOSE(ROW(INDIRECT("A1:A"&LEN(A1)-LEN(SUBSTITUTE(A1,"、",""))+1))-1))+1,LEN(A1)))
    公式返回“{"足球","篮球","沙滩排球","羽毛球","网球","乒乓球"}”。
    又如A1单元格为用“/”分隔的数值“33.5/25.7/3.1/25”,要得到这些数值的和:
    =SUM(--TRIM(MID(SUBSTITUTE(A1,"/",REPT(" ",LEN(A1))),LEN(A1)*(TRANSPOSE(ROW(INDIRECT("A1:A"&LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))+1))-1))+1,LEN(A1))))
回复

使用道具 举报

小黑屋|手机版|嘻皮客网 ( 京ICP备10218169号|京公网安备11010802013797  

GMT+8, 2024-5-10 10:14 , Processed in 0.190884 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表