用函数在Excel中从文本字符串提取数字

上传人:小** 文档编号:62412548 上传时间:2022-03-14 格式:DOC 页数:5 大小:56KB
返回 下载 相关 举报
用函数在Excel中从文本字符串提取数字_第1页
第1页 / 共5页
用函数在Excel中从文本字符串提取数字_第2页
第2页 / 共5页
用函数在Excel中从文本字符串提取数字_第3页
第3页 / 共5页
点击查看更多>>
资源描述
用函数在 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香 21 32 4 . 55 66 7元 8所以解决问题的基本框架是:用MID函数从字符串的第一个数字位置起提取到最后一个数字止的字符个数。即=MID (字符串, 第一个数字位置, 最后一个字符位置 -第一个字符位置 +1 。其中“+1”是补上最后一 个数字位置减去第一个数字位置而减少的一个数字位。三、解决方案及步骤假定字符串输入在 A2 单元格。确定 A2 中字符串的长度。即用LEN函数计算出A2中字符串中字符的个数,这个字符个数值就是字符串中最后一个字 符在字符串中的位置: =LEN( A2)。确认字符串中的每一个字符位置序列数组成的新数组。用INDIRECT函数返回一个由文本字符串指定的引用:=INDIRECT(1:&LEN($A2)用返回行数的函数ROW确定文本引用INDIRECT(1:&LEN($A2)构成的新数组:=ROW(INDIRECT(1:&LEN($A2) )用按指定位置开始返回指定个数字符的函数 MID返回由新数组=ROW (INDIRECT(1:&LEN($A2) )确定位置的每一个字符,并将文本转化成数值型数据:=-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根据用函数ISNUMBE检测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 进行公式确认。本公式不适用的文本字符串类型:形如WE1234GH098PII等。四、适当简化公式基于文本数字转化为数值型数字表达方式一一用函数VALUE符号“-”和“+0”或“ -0”效果完全一致,所以具体的提取文本中数字的公式可以适当简化为:=MID($A2,MIN(IF(ISNUMBER(MID($A2,ROW(INDIRECT(1:&LEN($A2),1)+0),ROW(INDIRECT(1:&LEN($A2),MAX(IF(ISNUMBER(MID($A2,ROW(INDIRECT(1:&LEN($A2),1)+0),ROW(INDIRECT(1:&LEN($A2)-MIN(IF(ISNUMBER(MID($A2,ROW(INDIRECT(1:&LEN($A2),1)+0),ROW(INDIRECT(1:&LEN($A2)+1)五、编后语特别指出,对于提取文本中的数字,本公式不是最简方法,同时也不一定是最佳方案。通过对字符串中数字的提取操作, 试图用 Excel 的工作表函数直接来完成原始的数字提取工 作,因此编辑的公式冗长;庖丁解牛的解决方案试图说明对文本中数字提取的想法和函数、 数组原始的理解及使用,从而描述清楚整个公式构成框架。基于对 Excel 知识及函数和数组掌握的水平及语言叙述表达的能力,可能存在很 多不足或错误,算是抛出来的一块砖吧,诚望有识者斧正。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!