mysql 中字符串和数字混合怎样截取固定长度_如何将混合了中英文及不同数量空格的文本,快速拆分成多列...

06608b73d6e1fba0167d689533329182.png

前段时间学员小D咨询到:有什么简便的方法,可以将将混合了中英文及不同数量空格的文本,快速拆分成多列?下图所示是小D的问题:

e37c673a4a70f90ec202cdc79bdca968.png

小D需要将这列数据拆分成如下图所示的4列数据:

084261069b3eff089c595ece93a5c337.png

刚一开始看到这个表格的时候,我说用“数据-分列”用空格作为分隔符来拆分就可以了吧。仔细一想,不行,前面的英文单词不一定是一个词,有些两个词中间也有空格,每一列的长度都是不固定的。

我们一起来思考一下,这个问题的解决方案。我们在处理Excel问题的时候,一定要分析数据的规律。

比如这个案例中,我们可以观察到,前面的英文单词、词类和中文解释中间都是一个空格间隔的,而中文解释和英文解释中间的空格都是2个空格以上的。找到了特定的规律之后,我们就可以分段来提取了。

e37c673a4a70f90ec202cdc79bdca968.png

提取第4部分

我们可以先把最后一部分的英文解释先提取出来。这里我们需要先利用FIND函数查询2个空格的位置,再用MID函数截取出来指定位置和指定长度的字符。我们先来看看这相关函数的语法:

查询一个字符串在一个单元格的起始位置:FIND(要找的字符串,包含查询字符串的单元格)从中间取字符:MID(文本,从第几位开始取,取多少位)除文本首尾空格:TRIM(文本)

0304bb2694a399253e4d39e009f71f60.png

组合的函数:=TRIM(MID(A1,FIND(" ",A1),200))

A1就是要拆分的列的第一个文本所在的单元格地址。最里面一层函数通过FIND函数查找两个空格所在的起始位置,用这个起始位置作为MID函数的第二个参数,向后截取长度为200的字符。因为不确定后面的英文解释有多少个字符,所以输入了一个比较大的数字。最后再用TRIM清除截取出来的文本的首尾空格。

提取第3部分

接着再来提取第3部分:中文解释。中文解释可以用MID函数从.所在的下一个字符开始,原始文档中的中文解释不超过10个字,所以截取的长度我直接输入了10,如果实际数据无法确定多少个字符,可以用两个空格的位置减去圆点的位置来就计算。

组合函数:=TRIM(MID(A1,FIND(".",A1)+1,10))

ae2f7cf817fd143bdb5baba0bd22d878.png

提取第2部分

接着来提取第2部分:词类。由于前面的英文单词有些是一个词,有些是两个词,此类的长度也不确定,我想到的方法是查找最后一个空格的位置,相关的函数包括:

可以按照定义的次数重复显示文本:REPT(文本,重复的次数)

在某一文本字符串中替换指定的文本:SUBSTITUTE(文本,旧字符,新字符)

左取字符:LEFT(文本,取多少位)

右取字符:RIGHT(文本,取多少位)

03ec618d90f5cf488dee243042fce999.png

组合函数:TRIM(RIGHT(SUBSTITUTE(LEFT(A1,FIND(".",A1))," ",REPT(" ",99)),99))

先用LEFT函数将从最左侧截取到圆点的位置的所有字符,比如这段字符:lateral line n. 侧线 A line of pressure-sensitive cells on the sides of bony fish.

就得到了这个部分的文本lateral line n.

接着用SUBSTITUTE函数将每个单词中间的一个空格替换成REPT形成的99个空格,再用RIGHT函数从右侧取出99个字符,最后用TRIM清除首尾空格。

提取第1部分

最后来提取第1部分:英文单词,使用了LEFT函数从文本的左侧提取,提取的长度用小圆点的位置减去了词类的长度,最后用TRIM清除首尾空格。

计算文本长度:LEN(文本)

48271d08931da9a3f932e314bb9bc0dd.png

组合函数:TRIM(LEFT(A1,FIND(".",A1)-LEN(C1)))

到此4列就拆分完毕了。如果对这个案例感兴趣,可以在“快乐享用Office”公众号后台输入关键字"拆分列",领取作业文件。最后汇总一下本文中使用到的相关函数:

  • 查询一个字符串在一个单元格的起始位置:FIND(要找的字符串,包含查询字符串的单元格)
  • 从中间取字符:MID(文本,从第几位开始取,取多少位)
  • 左取字符:LEFT(文本,取多少位)
  • 右取字符:RIGHT(文本,取多少位)
  • 清除文本首尾空格:TRIM(文本)
  • 可以按照定义的次数重复显示文本:REPT(文本,重复的次数)
  • 在某一文本字符串中替换指定的文本:SUBSTITUTE(文本,旧字符,新字符)
  • 计算文本长度:LEN(文本)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值