用函数在Excel中从文本字符串提取数字xx.doc_第1页
用函数在Excel中从文本字符串提取数字xx.doc_第2页
用函数在Excel中从文本字符串提取数字xx.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用函数在Excel中从文本字符串提取数字Excel输入数据过程中,经常出现在单元格中输入这样的字符串:GH0012JI、ACVB908、华升12-58JK、五香12.56元、0001#、010258等。在进行数据处理时,又需要把其中的数字0012、908、12-58、12.56、0001提取出来。如何通过使用Excel的工作表函数,提取出字符串中的数字?一、问题分析对于已经输入单元格中的字符串,每一个字符在字符串中都有自己固定的位置,这个固定位置都可以用序列数(1、2、3、)来表示,用这些序列数可以构成一个可用的常数数组。以字符串“五香12.56元”为例:序列数1、2、3、4、5、6、7、8分别对应着字符串“五香12.56元”中字符“五”、“香”、“1”、“2”、“.”、“5”、“6”、“元”。由序列数组成一个保存在内存中的新数组1;2;3;4;5;6;7;8(用列的形式保存),对应字符串中的字符构成的数组“五”;“香”;“1”;“2”;“.”;“5”;“6”;“元”。因此解决问题可以从数组着手思考。二、思路框架问题的关键是,如何用序列数重点描述出字符串中的数字部分的起始位置和终止位置,从而用MID函数从指定位置开始提取出指定个数的字符(数字)。不难看出,两个保存在内存中的新数组:“五”;“香”;“ 1”;“2”;“.”;“5”;“6”;“元”1;2;3;4;5;6;7;8数组具有相同大小的数据范围,而后一个数组中的每一个数值可以准确地描述出字符串中字符位置。字符与序列数的对应关系如下表所示:字符字符位置五1香21324.55667元8所以解决问题的基本框架是:用MID函数从字符串的第一个数字位置起提取到最后一个数字止的字符个数。即=MID(字符串,第一个数字位置,最后一个字符位置-第一个字符位置+1。其中“+1”是补上最后一个数字位置减去第一个数字位置而减少的一个数字位。三、解决方案及步骤假定字符串输入在A2单元格。确定A2中字符串的长度。即用LEN函数计算出A2中字符串中字符的个数,这个字符个数值就是字符串中最后一个字符在字符串中的位置:=LEN(A2)。确认字符串中的每一个字符位置序列数组成的新数组。用INDIRECT函数返回一个由文本字符串指定的引用:=INDIRECT(1:&LEN($A2) (LEN($A2)得到字符串长度.1:&LEN($A2)就得到1:8所以应该是ROW(1:8),但实际上1:8这时还是一个字符串,而ROW的参数要求是一个引用地址,用以用INDIRECT将其转换为引用地址)用返回行数的函数ROW确定文本引用INDIRECT(1:&LEN($A2)构成的新数组:=ROW(INDIRECT(1:&LEN($A2))-是数组(1.2.3.4)用按指定位置开始返回指定个数字符的函数MID返回由新数组=ROW(INDIRECT(1:&LEN($A2))确定位置的每一个字符,并将文本转化成数值型数据:INDIRECT(1:&LEN($A2))确定位置的每一个字符,并将文本转化成数值型数据:用MID($A12,1;2;3;4;. ,1)按位列出每位的字符,结果是五;香;1;2;.;5;6.=-MID($A2,ROW(INDIRECT(1:&LEN($A2),1)-是值(文本)注意:函数MID返回的字符是文本,将文本转化为数值型数据,可以用函数VALUE,也可以同等功能地用符号“-”或“+0”或“-0”简化表达,这里用“-”表示。函数ISNUMBER判别MID函数提取出来的字符是不是数字,是数字返回TRUE,不是数字返回FALSE。具体公式是:=ISNUMBER(-MID($A2,ROW(INDIRECT(1:&LEN($A2),1)逻辑函数IF根据用函数ISNUMBER检测MID函数提取出来的字符是否数值的真假,返回数字字符在字符串中的位置,如果不是数字则返回空白字符。具体公式是:=IF(ISNUMBER(-MID($A2,ROW(INDIRECT(1:&LEN($A2),1),ROW(INDIRECT(1:&LEN($A2),)用MIN函数返回数字位置数组成数组中的最小数。具体公式是:=MIN(IF(ISNUMBER(-MID($A2,ROW(INDIRECT(1:&LEN($A2),1),ROW(INDIRECT(1:&LEN($A2),))用MAX函数返回数字位置数组中的最大数。具体公式是:=MAX(IF(ISNUMBER(-MID($A2,ROW(INDIRECT(1:&LEN($A2),1),ROW(INDIRECT(1:&LEN($A2),))确认字符串中第一个数字的起始位置:=MIN(IF(ISNUMBER(-MID($A2,ROW(INDIRECT(1:&LEN($A2),1),ROW(INDIRECT(1:&LEN($A2),))确认字符串中第一个数字与最后一个数字之间的字符个数:=MAX(IF(ISNUMBER(-MID($A2,ROW(INDIRECT(1:&LEN($A2),1),ROW(INDIRECT(1:&LEN($A2),))-MIN(IF(ISNUMBER(-MID($A2,ROW(INDIRECT(1:&LEN($A2),1),ROW(INDIRECT(1:&LEN($A2),))+1注意:公式中的“+1”,是对字符串中最后一个数字位数减去第一个数字位数,造成第一个数字与最后一个数字之间的字符个数少1的补充。用函数MID在A1中按指定位置开始提取指定个数的字符(数字)。综上所述,第步的公式为MID函数的第2个参数,第步的公式为MID函数的第3个参数。组合后提取A1中数字的具体公式如下。在B2单元格编辑公式:=MID($A2,MIN(IF(ISNUMBER(-MID($A2,ROW(INDIRECT(1:&LEN($A2),1),ROW(INDIRECT(1:&LEN($A2),),MAX(IF(ISNUMBER(-MID($A2,ROW(INDIRECT(1:&LEN($A2),1),ROW(INDIRECT(1:&LEN($A2),)-MIN(IF(ISNUMBER(-MID($A2,ROW(INDIRECT(1:&LEN($A2),1),ROW(INDIRECT(1:&LEN($A2),)+1)用三键确认公式输入,即用组合键Ctrl+Shift+Enter进行公式确认。本公式不适用的文本字符串类型:形如WE1234GH098PIU等。四、适当简化公式基于文本数字转化为数值型数字表达方式用函数VALUE、符号“-”和“+0”或“-0”效果完全一致,所以具体的提取文本中数字的公式可以适当简化为:=MID($A2,MIN(IF(ISNUMBER(MID($A2,ROW(INDIRECT(1:&LEN($A2),1)+0),ROW(INDIRECT(1:&LEN($A2),MAX(IF(ISNU

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论