Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 77214|回复: 48

[分享] Excel提取文本和数字

  [复制链接]
发表于 2011-8-2 16:12 | 显示全部楼层 |阅读模式
本帖最后由 爱疯 于 2012-9-12 13:13 编辑

Excel中提取字符串的常见形式有以下三种:
第一,从原有文本中截取一部分用于形成新的文本;
第二,文本和数字分离;
第三,提取文本中的数字。

  提取字符串的常用函数有left(rihgt)、mid、substitute等等。LEFT函数是从左向右提取,RIGHT函数是从右向左提取,MID函数也是从左向右提取,但不一定是从第一个字符起,可以从中间开始提取。


第一题,从下图所示的E-mail地址中提取“@”字符以前的文本作为账号。
  上图所示的E-mail地址中包含用户的账号,但是账号长短不一,单独使用LEFT函数无法提取,需要配合FIND函数来实现。
  FIND函数的用法是返回一个字符串在另一个字符串中出现的起始位置。FIND函数的格式是:FIND(要查找的文本,包含要查找文本的文本, 指定开始进行查找的字符)。
  本题的思路是使用FIND("@",A19)返回"@"在A19单元格的位置,然后再使用LEFT函数从A19单元格从最左边开始提取到"@"之前的字符。
  因此,第一题的公式为:=LEFT(A19,FIND("@",A19)-1),下拉即可完成。
  另外也可以使用数组公式:=LEFT(A19:B25,FIND("@",A19:B25)-1),三键结束,下拉。


第二题,将下图所示的电话号码的区号和号码分别提取出来。
  区号的提取方法和第一题一样,公式为:=LEFT(A29,FIND("-",A29)-1)。
  后面的号码的提取就是用LEN函数来得到A29单元格的长度减去包括“-”符号之前的值做为right函数的Num_chars值为需要提取的字符数。公式为:=RIGHT(A29,LEN(A29)-FIND("-",A29))。
  上面的公式涉及到一个很简单但很实用的函数,就是LEN函数。它的功能就是返回文本字符串中的字符个数。LEN函数的语法是:LEN(text)。Text就是要查找其长度的文本。空格将作为字符进行计数。


第三题:从下图所示的15位和18位身份证号码中分别提取出生日期,性别,年龄。
  第一,身份证号码对应的性别:
  15位号码的最后一位为奇数是男,偶数是女;18位号码的第17位为奇数是男,偶数是女。
  第二,身份证号码对应的出生日期:
  15位号码的:7~8位为出生年份(2位),9~10位为出生月份,11~12位为出生日期。
  18位号码的:7~10位为出生年份,11~12位为出生月份,13~14位为出生日期。
  性别的提取需要嵌套多个函数完成。用IF函数来判断MOD函数的值,从而判断出性别是男或女。公式为:=IF(MOD(RIGHT(LEFT(A37,17)),2),"男","女")
  其中,IF函数的语法结构:IF(条件,结果1,结果2)。对满足条件的数据进行处理,条件满足则输出结果1,不满足则输出结果2。可以省略结果1或结果2,但不能同时省略。
  IF()函数,是一个逻辑判断函数。如果条件为真,返回 TRUE,TRUE 值为1,否则就返回FALSE ,FALSE 值为0。
  性别的提取另外还有几种公式都可以实现。
  第一,=IF(ISODD(MID(A37,8+LEN(A37)/2,1)),"男","女")
  第二,=IF(ISODD(MID(A37,IF(LEN(A37)=15,15,17),1)),"男","女")
  第三,=IF(MOD(MID(A37,15,3),2),"男","女")
  出生日期的提取,可以使用公式:=TEXT(IF(LEN(A37)=15,19,"")&MID(A37,7,6+IF(LEN(A37)=18,2)),"#-00-00"),然后,下拉实现。
  年龄公式为:=DATEDIF(TEXT(MID(A37,7,6+2*(LEN(A37)=18)),"#-00-00"),NOW(),"y"),下拉。


第四题:分别提取下图所示联系方式中的姓名和电话。
  第一种方法:
  提取电话,在E3单元格输入公式:=MID(A3,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A3&"0123456789")),LEN(A3)),然后下拉。
  姓名提取,就直接使用:=SUBSTITUTE(A3,E3,""),下拉,就OK了。
  第二种方法:
  提取姓名的公式为:=LEFT(A3,LENB(A3)-LEN(A3))
  提取电话的公式为:=RIGHT(A3,2*LEN(A3)-LENB(A3))。


第五题:提取下图所示单元格中的数字。
  有两种方法都可以实现:第一,使用自定义函数。第二,使用嵌套函数公式。
  关于自定义函数的方法可以参考:《Excel中提取字符常用实例》,网址是:http://www.ittribalwo.com/show.asp?id=591
  使用下面两个公式之任意一个,都可以实现:第一:=-LOOKUP(,-MID(A11,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A11&1234567890)),ROW($1:$15)))
  第二:=-LOOKUP(,-MIDB(A11,SEARCHB("?",A11),ROW($1:$15)))
  但是上面公式中,如果源数据的数字之前有0,LOOKUP在查找时就会被忽略掉。比如B11单元格中的235号,如果是0235号,那么使用上面的公式,0就会被忽略。

评分

参与人数 11 +80 金币 +30 收起 理由
QQ_03A92F + 1
wwww114402 + 1
爱疯 + 30 + 30
yyyydddd8888 + 1 太好了!学习
fjk7070 + 12

查看全部评分

发表于 2011-8-2 16:34 | 显示全部楼层
回复

使用道具 举报

发表于 2011-8-2 16:48 | 显示全部楼层
回复

使用道具 举报

发表于 2011-8-2 16:49 | 显示全部楼层
回复 macky591 的帖子

ISODD是什么函数,请教一下楼主
回复

使用道具 举报

 楼主| 发表于 2011-8-2 16:51 | 显示全部楼层
回复 DD_WJ 的帖子

返回奇数为true
回复

使用道具 举报

发表于 2011-8-2 17:06 | 显示全部楼层
回复 macky591 的帖子

在函数帮助里面找不到ISODD的帮助,这个函数使用还是不是很明白,能否再解释一下,谢谢!
回复

使用道具 举报

发表于 2011-8-2 22:37 | 显示全部楼层
谢谢分享啦!      
回复

使用道具 举报

发表于 2011-8-2 22:45 | 显示全部楼层
这个很不错的,一定要学习
回复

使用道具 举报

发表于 2011-8-3 14:07 | 显示全部楼层
谢谢分享   
回复

使用道具 举报

发表于 2011-8-3 14:23 | 显示全部楼层
谢谢分享  
{:171:}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 08:33 , Processed in 0.239171 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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