用 Excel 处理数据时,有时需要对字符串进行拆分。对于比较简单的拆分,使用 Excel 函数可以顺利完成,但碰到一些特殊需求,或者拆分的规则比较复杂时,则很难用 Excel 实现了。这里列出一些拆分需求示例,分析拆分难点,并提供 SPL 解决代码。SPL 是专业计算引擎 esProc 使用的语言,用于处理结构化数据运算非常方便,对于字符串拆分的运算也很简单。

一、规则单词拆分

这里有一份车间采购产品清单,清单的每一项包含了需要采购的品牌以及产品型号。现在想要把每一项的品牌以及型号拆分后单独列到后面。

文件 productlist.xlsx 中数据如下:

期望结果:

使用 Excel 来处理这类拆分时,可以使用数据的分列,但是分列有个缺点,其实也算不上缺点,只是针对这个只想拆出品牌的需求来说单词被过渡拆分了。比如后面的型号,也会被拆分到多个列,又需要重新合并,过程有点得不偿失。不过 Excel 还有一个快速填充,可以根据给定的参考值,比如第一行给定 PANASONIC,便可使用类似规则快速填充后面行的拆分,然后再用 Mid 函数间接算出型号的字符串部分,过程依然繁琐。

使用 SPL 可以直接读取 Excel 文件,对于实时分析操作,也可以将 Excel 中的数据复制到剪贴板,然后在 SPL 里面使用 clipboard 函数直接从剪贴板获取数据,数据整理完后,再将结果放入剪贴板,然后在 Excel 中粘贴结果,这样便可将 Excel 的分析操作跟 SPL 的计算无缝对接起来,方便而又高效。

SPL 拆分代码:

A B
1 =clipboard().import@i() /从剪贴板导入产品清单
2 =A1.(~.split@1(" ")) /从第一个空格处将产品清单分离为两部分,产生一个序列的序列
3 =A2.concat@n("t") /拼接为子序列的成员用 Tab 分隔,序列的成员之间用回车分隔的二维表串
4 =clipboard(A3) /将串值放置到剪贴板

代码执行完成后,只需在B1 格粘贴便可得到期望结果。

二、数字分离

如下为一些数字跟字符混合在一起的数据,现在需要将数字和字符分离开。

文件 numbers.xlsx 中数据如下:

期望结果:

如果是光分离数字出来,仍然可以使用给定首行参考值,然后采用快速填充,便可以将所有数字分离出来。但是要将剩余的字符再分离出来,Excel 没有合适的办法,因为有些数字是跟字符交叉混合在一起,没法用 Mid 等函数拆分。只能采用 VBA 写代码逐字循环,判断字符类型,挨个分离,过程依然麻烦。

SPL 可以直接将串分离成单字符,并根据类型划分:

A B
1 =clipboard().split@n() /将剪贴板数据按回车拆分为成员,然后将成员再逐字拆分
2 =A1.(~.align@a([true,false],isdigit(~)).(~.concat())) /每一项字符序列用是否为数字分成两组,继而再拼成串,从而分离出数字和字符
3 =A2.concat@n("t") /将两层序列分别用 Tab 和回车拼为二维表式的大串
4 =clipboard(A3) /将大串放置到剪贴板

三、日期分离

下面为一些包含日期的句子或段落,现在想要把句子里面所有的日期分离出来,一行中包含多个日期时,用分号分开。

文件 multidates.xlsx 中数据如下:

期望结果:

要将句子里面的日期分离出来,Excel 没有相应的办法,尤其像这种一个句子里面有不定个数的日期。如果是固定位置或长度的日期格式,才可能用截取固定长度,或者使用快速填充能够办到。对于上述多个日期的分离,只能写 VBA 代码,再用正则表达式去匹配解析,完成这种需求对人员要求较高,且实现过程繁琐。

SPL 直接用空格分割串为单词序列,然后按格式转换日期类型的数据:

A B
1 =clipboard().split@n(“ “) /将剪贴板数据按回车拆分成员,然后用空格将每一成员拆分为单词序列
2 =A1.(~. (date(~,"dd.MM.yy"))) /将单词序列的成员按照指定格式转换为日期类型的数据
3 =A2.(~.select(ifdate(~))) /选出序列中的日期类型的值
4 =clipboard(A3.concat@n(“;”)) /将日期串序列结果拼接为二维表串并放置到剪贴板

执行完上述代码后,直接在源表中的B1 格执行粘贴,即可得到期望结果。

四、按字符拆分

如下表为一列长度不等的数字,现在需要将数字逐字拆分成为单独的列。

文件 number.xlsx 的数据:

期望结果:

使用 Excel 拆分上述数字时,首先想到的是使用分列,但是像这种逐字拆分,分列时只能一个一个指定分隔位,数字比较长时就要多次重复设置,操作多而麻烦。其次是使用函数,比如可以在 B1 写入 =MID($A1,COLUMN(A1),1),然后拖拽鼠标进行行填充以及列填充,但这种操作不好掌握最大列数,篇幅大时,操作也不方便。

SPL 可以直接按字符拆分:

A B
1 =clipboard().split@n() /将剪贴板数据按回车拆分成员,然后每个成员再缺省拆分为单字符序列
2 =A1.concat@n("t") /将拆分后的两层序列拼成串式二维表
3 =clipboard(A2) /将结果放置到剪贴板

上述代码执行完成后,同样在 B1 处粘贴拆分后的数据即可。

五、属性表和文件名拆分

如下数据为一段日志描述文件,结构相对复杂,其中包含类似于属性表的分节描述。现在想将属性描述中的 PublicKeyToken 以及文件名分离出来。

文件 log.xlsx 的数据:

期望结果:

这是一个综合串的分离,第一层为用逗号分隔的描述串,然后第二项类似于属性分节串的描述。所以使用 Excel 时,需要多次分列,以及多次快速填充,方可完成期望结果。同样是步骤多,且需要给定参考值来快速填充,过程繁琐。

SPL 提供了函数直接对属性串取值,以及对文件名的不同部分拆分:

A B
1 =clipboard().split@nc() /将剪贴板数据用回车拆分成员,然后以逗号拆分子成员序列
2 =A1.([replace(~(2),""","").property("PublicKeyToken"),filename(replace(~(3),""",""))]) /去掉两端引号后,用属性 property 函数从第 2 项获取 PublicKeyToken 的值;再用 filename 函数拆分出第 3 项中的文件名;再将这两个值构成序列
3 =clipboard(A2.concat@n("t")) /将结果拼为大串放置到剪贴板

excel split函数_Excel 字符串拆分相关推荐

  1. 【SQL】sql版Split函数。用于拆分字符串为单列表格

    [SQL]sql版Split函数.用于拆分字符串为单列表格 功能与.net版string.Split函数类似,只不过.net返回的是数组,这个返回的是一个单列表格,每个拆分出来的子串占一行.可选是否移 ...

  2. C语言实现split()函数:字符串分割

    C语言实现split函数:字符串分割 代码如下 运行结果 Python中有split()函数,觉得很好用,但在C语言的标准库下却没有,只好手动实现了 代码如下 /** 函数: split()* 功能: ...

  3. 计算机中的乘法函数公式,教程方法;excel乘法函数_excel乘法公式电脑技巧-琪琪词资源网...

    琪琪词资源网-教程方法;excel乘法函数_excel乘法公式电脑技巧,以下是给大家带来的教程方法;excel乘法函数_excel乘法公式,大家可以了解一下哦! excel乘法函数 Excel中经常会 ...

  4. split函数python_Python字符串split函数知多少【Python每日一个知识点第75期】

    Python字符串操作是一名开发人员的基本功,求职面试往往也会通过字符串相关考题来考验开发者对于语言基础的掌握.Python字符串的分割操作更是考察重点,能否灵活运用split被视为开发人员对于Pyt ...

  5. javascript 中 split 函数分割字符串成数组

    分割字符串成数组的方法有很多,不过使用最多的还是split函数 <script language="javascript"> str="2,2,3,5,6,6 ...

  6. mysql字符串拆分split功能_mysql字符串拆分实现split功能

    转自:https://blog.csdn.net/pjymyself/article/details/81668157 有分隔符的字符串拆分 [0]需求 数据库中 num字段值为: 实现的效果:需要将 ...

  7. excel减法函数_Excel公式练习35: 拆分连字符分隔的数字并放置在同一列中

    学习Excel技术,关注微信公众号: excelperfect 导语:这个案例仍来自于excelxor.com,没有办法,太有才了,不得不佩服这些人,竟然能把Excel公式与函数玩成这个样子!认真研究 ...

  8. js 数组按奇偶拆分_js中通过split函数分割字符串成数组小例子

    str="2,2,3,5,6,6"; //这是一字符串 var strs= new Array(); //定义一数组 strs=str.split(","); ...

  9. excel中线性函数_Excel中特别有用的不常用函数之Indirect函数

    今天介绍一下Indirect函数.这个函数属于特别有用的一个函数,但是很多人并不太了解它的作用.今天我们就详细介绍一下. 01 INDIRECT函数的工作方式 这个函数的语法特别简单: INDIREC ...

最新文章

  1. spec 2016使用
  2. IEEE signal processing letters 投稿经验
  3. 电脑键盘下划线怎么打_图文详解笔记本电脑键盘失灵怎么办
  4. 玩玩IronPython
  5. linux IP DNS 配置
  6. 怎么把文件导入云服务器,怎么把文件放到云服务器里
  7. javaeye怎么打不开了?当前!2010,10,24,23:08
  8. 人性的弱点 - 把握人际交往的关键
  9. 微信小程序实现上传图片的功能
  10. ssis 抽取mysql 实验_SSIS探索之SSIS增量抽取数据
  11. Application.DoEvents()
  12. java集合转字符串 字符串转集合 StringUtils 一个强大的字符串操作工具
  13. IIS部署添加网站发布网站
  14. elasticsearch 英文数字组合字符串模糊检索
  15. excel身份证号计算年龄
  16. linux 查看syn网络日志,Linux下分析SYN flood攻击案例
  17. openstack里给云主机配置vip
  18. C++ 模板中的类型获取(一)
  19. 联想拯救者y7000p加内存条_内存、硬盘不够用?手把手教你升级联想拯救者 Y7000P...
  20. 小型校园网的设计与组建

热门文章

  1. 阿里云推PostgreSQL 10 高可用版
  2. 阿里云发布链路追踪服务Tracing Analysis
  3. 因吵架总被骂,阿里程序猿一气之下发明“情侣吵架神器”
  4. 源码级别的广播与监听实现
  5. Gartner:企业机构需重新定义网络安全领导者角色
  6. 远程办公首日企业通讯软件崩溃、紧急扩容,云办公怎么了?
  7. 百度积极回应阿波龙项目不实报道;半数开发者认为学习新语言很困难;腾讯在长沙建立首个智慧产业总部……...
  8. RuoYi-Cloud 部署篇_02(windows环境 mysql版本)
  9. IntelliJ IDEA 2020.x 入门到爱不释手
  10. Centos7 Docker 文件拷贝_入门试炼04