Excel中字符串的截取

本文主要用来讨论没有分隔符情况下的单元格字符串处理,像空格、逗号类似的能够明显分割字符串的情况可以采用【分列】功能直接处理。

主要是利用函数公式进行截取字符串,涉及函数有:clean,left,right,len,lenb,find,min。

【注】:本文建立在字符串中无空格的前提下,如果有空格可以先用替换为空的方式处理掉,如果必须保留空格,本文的处理方法可能不适用。


首先,我们处理的是无空格的字符串,但是实际情况不可能这么理想化,数据的来源也是各不相同,尤其是网络抓取的数据,其中有些特殊字符直接观察难以发现,比如“\n”,Excel函数无法识别正则表达式,这种情况我们就要先清理单元格字符串,去除一些无法识别但又占位的字符,我们一般用clean函数来处理:

=CLEAN(A1)

我们默认处理的单元格都在A1上。以下方法都在建立在清理后的字符串的基础上的。

中文+数字:

比较常见的是分离“姓名+手机号”,这种情况比较好处理,例如:张三15812345678,李小明13512345678,我们观察发现这种情况姓名的长度不一致,但是手机号的长度是一样的,都是11位,那我们可以先取手机号:

=RIGHT(A1,11)

这样我们就得到了手机号,姓名怎么取呢?可以用总的字符串长度-手机号的长度:

=LEFT(A1,LEN(A1)-11)

这样就取到了姓名,当然这是比较理想的情况,必须保证所有的数据都是非常规整的,只要手机号长度不是11位的,那么处理结果就是错的。那怎么办呢,其实有时候的错误结果也不是坏事,因为你可以从错误结果中知道,那些人的数据是错误的,这种情况只适用于数据量比较小的时候,如果数据量比较大,那么人工检查效率是非常低的,那么怎么兼容处理手机号的问题呢?这里我们用另一种方法先取姓名:

=LEFT(A1,LENB(A1)-LEN(A1))

这个函数公式怎么来的,LEN和LENB的区别是前者把中文作为一个字符长度,而后者则作为两个字符长度。所以LENB(A1)-LEN(A1)就是左侧中文的字符长度,这样就可以直接获取姓名,既然姓名的长度有了,剩下的手机的长度就是总长度-姓名长度:LEN(A1)-(LENB(A1)-LEN(A1)),即2LEN(A1)-LENB(A1),那么手机号:

=RIGHT(A1, 2LEN(A1)-LENB(A1))

这样看来第二种方法的兼容性更加好。不过分离中文+数字在Excel2013以上版本中不用这么麻烦,只需要使用快速填充功能即可完成。

中文+数字+中文:

这种情况略微复杂些,因为头尾都有中文,上面的解决方案就不适用,比如常见的“姓名+电话+公司名”,这种情况就涉及到FIND函数来确定中间数字的起始位置。我们先检查数字首次出现的位置:

=MIN(FIND({0;1;2;3;4;5;6;7;8;9},A1&1234567890))

FIND函数用来查找字符串中对应字符首次出现的位置,{0;1;2;3;4;5;6;7;8;9}表示查找字符集0-9每个数首次出现的位置,并返回0首次出现的位置,如果有一个数没有查到,则返回#VALUE!,为了保证0-9都出现,我们在A1后边加了“1234567890”,保证有返回值。但是首次出现的未必是0,可能是其他9个数字的任意一个,所以我们又在这个数据结果集外面用了MIN,用来返回第一个数字的位置。

知道了第一个数字的位置,我们马上可以截取左边中文的内容:

=LEFT(A1, MIN(FIND({0;1;2;3;4;5;6;7;8;9},A1&1234567890))-1)

中间数字部分:

=MID(A1,MIN(FIND({0;1;2;3;4;5;6;7;8;9},A1&1234567890)),2LEN(A1)-LENB(A1) )

剩余的中文就好处理了,这个要利用已经获取的左侧中文和数字的长度,结合总长度,用RIGHT函数就可取出,这里就不赘述了。

其实本文讲的方法也只适用于部分数据格式,并不适用所有情况,但我们可以随机应变,总有方法解决问题。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容