excel split函数_Excel 字符串拆分

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

一、规则单词拆分

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

文件 productlist.xlsx 中数据如下:

v2-84932c8cbd28b5d55f92c5d3f94b7b0a_b.jpg

期望结果:

v2-47255af1f54302154b50162569c1ccf8_b.jpg

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

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

SPL 拆分代码:

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

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

二、数字分离

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

文件 numbers.xlsx 中数据如下:

v2-df7d452aaf3a97d7d57d21ef54b5793f_b.png

期望结果:

v2-031f9e5b546cfc2efbaaea84cc5b3842_b.jpg

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

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

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

三、日期分离

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

文件 multidates.xlsx 中数据如下:

v2-871911d029bf9295736071fc53a928d2_b.jpg

期望结果:

v2-f077ce3d10907fabc03a1a3e5cb66009_b.jpg

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

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

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

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

四、按字符拆分

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

文件 number.xlsx 的数据:

v2-e94f9726623b5599a7dd9e3c611af4fb_b.jpg

期望结果:

v2-37cd7c4c70fecf797b29e9db762ff0a1_b.jpg

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

SPL 可以直接按字符拆分:

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

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

五、属性表和文件名拆分

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

文件 log.xlsx 的数据:

v2-d3f87632a711c4f85ffffc48edc5ba69_b.jpg

期望结果:

v2-65633c2dce8e742d659113a73b20f36e_b.jpg

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527544.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python优雅编程_Python优雅地可视化数据

[导读]声明:由于本文的代码大部分是参考书中的例子,所以不提供完整代码,只提供示例片段,也就是只能看出某一部分用法,感兴趣的需要在自己的数据上学习测试。 声明:由于本文的代码大部分是参考书中的例子&am…

linux 未找到wifi适配器,无线 - 重新启动后找不到WI-FI适配器

问题:我已经成功安装了ubuntu 18.04.3 LTS,已经成功连接到无线网络,但是重新启动后,找不到wifi适配器,在每次重新启动时要重新安装wifi驱动程序很烦人,如果能帮帮我,将非常感激,网络…

在c语言中数组下标的最小值,数组元素下标的上限_c语言中,数组元素的下标下限为...

展开全部c语言中,数组元素的下标下限为0。数组中的各元素的存e69da5e887aa62616964757a686964616f31333431373230储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如&#…

python求矩形面积_关于python:创建矩形类

我真的不太懂课程,任何帮助都会很好。 矩形类应具有以下私有数据属性: __length __width Rectangle类应该有一个创建这些属性并将其初始化为1的__init__方法。它还应具有以下方法: set_length—此方法为__length字段赋值。 set_width—此方法…

linux epel7安装,在CentOS6.x或CentOS7.x上安装EPEL Repo,Extra Packages for Enterprise Linux (EPEL)...

在CentOS6.x或CentOS7.x上安装EPEL Repo,Extra Packages for Enterprise Linux (EPEL)Error: Cannot retrieve metalink for repository: epel. Please verify its path and try againReporepository,资源库,源的意思。RHEL EPEL(Extra Packages for Ent…

sparkstreaming 读取mysql_第十篇|SparkStreaming手动维护Kafka Offset的几种方式

Spark Streaming No Receivers 方式的createDirectStream 方法不使用接收器,而是创建输入流直接从Kafka 集群节点拉取消息。输入流保证每个消息从Kafka 集群拉取以后只完全转换一次,保证语义一致性。但是当作业发生故障或重启时,要保障从当前…

c语言程序设计题2015,2015年荐C语言程序设计等级考试习题汇编.doc

C语言程序设计等级考试习题汇编1、设计程序:数列第1项为81,此后各项均为它前1项的正平方根,统计该数列前30项之和,并以格式"%.3f"写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p; fl…

用了python之后笔记本卡了_应用

想参与时下最热门的话题讨论吗?看过这些2012最炙手可热的电影电视剧吗?想了解最新职场信息,轻松晋升职场达人么?……本应用为你精选了5个分类(经济、教育、娱乐、生活、科技)共150篇妙趣横生的时尚双语新闻, 7天时间完…

c语言tmplink,为了便于阅读,偿试把BLHeli的汇编源程序改成C语言格式

只是为了方便阅读和理解,所以未做详细的正确性检查。因为能力所限,程度中还是保留了很多跳转(goto)语句。主循环已经完成,发上来供大家参考int main(void){if(0 Prepare_Lock_Or_Fuse_Read() & 0x80){while(1);}Disable_Watchdog();Init…

anaconda 安装pytorch_conda上安装PyTorch

conda上安装PyTorch这里的安装系统:Windows系统第一步,打开Anaconda Prompt第二步,为pytorch创建一个环境:conda create -n pytorch python3.8(这里的pytorch是环境的名称,python3.8表示安装的是3.8版本的p…

c语言 自动化编译环境,《C编程.开始C》3.编译基础

在介绍了C编程的基本概念之后,我们现在可以简要地讨论编译过程。像任何编程语言一样,C本身对于微处理器来说是完全不可理解的。它的目的是提供一种用于人类是提供一种能够很容易地转换成机器代码指令以直观的方式是理解到微处理器。该编译器是什么翻译我…

curd什么意思中文_查英英字典:What a shame是什么意思?

查英英字典:What a shame是什么意思?“互联网”时代学习英语有两种“学习方法”:简单粗暴学法和自己动手丰衣足食法。一、简单粗暴法:直接问老师要“中文答案”在过去非互联网时代,“老师”往往是提供“答案”的唯一渠…

一维搜索进退法c语言程序,基于c语言黄金分割法优化设计.doc

基于c语言黄金分割法优化设计基于c语言黄金分割法优化设计【摘 要】 机械优化设计是适应生产现代化要求发展起来的一门崭新的学科。它是在现代机械设计理论的基础上提出的一种更科学的设计方法,它可使机械产品的设计质量达到更高的要求。基于黄金分割法提出的利用C语…

c++读出像素矩阵_Python传numpy矩阵调c++(求3D图像连通区域)

Python有很多种调c的方法,有的复杂有的简单,有时使用的时候反而不知道到底该用哪一种比较好,其实没有最好的方法,只有适合不适合自己。本文从我所遇到的问题说起,然后讲述另一种比较简单的python调c并且传参numpy矩阵的…

android四大组件的作用简书,Android四大组件是什么

Android四大组件是:活动、服务、广播接收器、内容提供商。它们的英文名称是ACTIVITY、SERVICE、BroadcastReceiver、Content Provider。四个组件分别起到不同的作用,相互配合才能确保安卓系统的正常运行,因此是缺一不可的。Android四大组件及…

python 获取文件大小_第41p,超级重要,Python中的os库

大家好,我是杨数Tos,这是《从零基础到大神》系列课程的第41篇文章,第二阶段的课程:Python基础知识:Python内置库之os库的使用。学习本课程,建议先看一遍:【计算机基础知识】课程。os模块是与操作…

android 多个textview,Android:多个textview像单个文本

需要格式化几个textview像一个又一个独特的文本块,有没有办法实现这个?Android:多个textview像单个文本这样__________________________| || || aaaaaa bbbbbbbbbbbbbbb || bbbbbbbbbb cccccc dddd || ddddddddddddd. || |我不能把TextView的…

惠普打印机节能环保认证证书_低成本高效办公 苏宁惠普超品日这几款打印机了解下!...

【PConline 导购】说到打印机,很多朋友会想到公司那台不停运转的打印机。其实,伴随着近几年来打印机技术的成熟,其打印成本也一降再降,这就让有打印的需求的中下型企业,甚至个人,都会去选购一款合适的打印产…

vm客户机隔离不能选_开汽车美容店,这些位置绝对不能选,会让你门可罗雀,生意惨淡...

之前的文章里,讲了一些开汽车美容店选址的要领,今天,来聊聊一些更加细致的选址要素,让你避免错误选址而导致生意不佳。门面宽度小于2.5米的不要选一辆普通汽车的宽度在1.8米-2米之间,加上两侧后视镜各20公分左右&#…

Android app 标签,android 获取APP的唯一标识applicationId的实例

使用getIdentifier()方法可以方便的获各应用包下的指定资源ID。方式一int indentify getResources().getIdentifier(“com.test.demo:drawable/icon”,null,null);第一个参数格式是:包名 : 资源文件夹名 / 资源名;是这种格式 然后其他的可以为null方式…