古香网 - 知识创造价值
热搜:
快讯
首页 /古香资讯 / 正文

Excel混合字符串提取数字的方法?

内容摘要

在Excel中可以很方便地把混合字符串中的数字提取出来,并且至少存在五种比较成熟的方案来适应各种不同的情况和版本。如果你正在使用的是Microsoft 365或者Excel 2021的话,可以用SUBSTITUTE嵌套TEXTJOIN的方式一次性去掉所有的非数字字符并准确地得到第一个连续的数字序列;如

在Excel中可以很方便地把混合字符串中的数字提取出来,并且至少存在五种比较成熟的方案来适应各种不同的情况和版本。如果你正在使用的是Microsoft 365或者Excel 2021的话,可以用SUBSTITUTE嵌套TEXTJOIN的方式一次性去掉所有的非数字字符并准确地得到第一个连续的数字序列;如果需要兼容到Excel 2010以上版本,则可以利用SUMPRODUCT配合MID和ROW构造数组公式来进行批量处理;Power Query提供了无须公式的图形化途径,在大批量台账清理的时候非常有用;LAMBDA函数可以让自定义逻辑被重复使用并且可以根据参数的变化而改变;VBA或者Kutools的EXTRACTNUMBERS也可以使操作更加灵活高效。

Excel混合字符串提取数字的方法?

SUBSTITUTE嵌套TEXTJOIN:对于365/2021版的用户来说,可以得到第一个连续的数字串

本方法的核心就是逐个字符地把不是数字的部分替换成空值之后再进行拼接。具体的实现方式是,在目标单元格中输入以下公式:=TEXTJOIN("",TRUE,IF(ISNUMBER(--MID(A2,SEQUENCE(LEN(A2)),1)),MID(A2,SEQUENCE(LEN(A2)),1),"")),然后按下回车键就可以得到想要的结果了。其中SEQUECEN函数可以产生从1到文本长度的数组,MID函数用来逐个字符地拆分出文本的内容,--强制转换为数值后会触发ISNUMBER函数来判断是否为数字,TRUE表示只保留数字部分,TEXTJOIN函数则负责把这些内容无缝地连接起来。需要注意的是:这个公式的目的是提取第一个连续的数字串,并且如果字符串中含有“订单号A123B456”的形式的话只会返回出“123”而不包含后面的任何东西;如果要获取所有的数字连贯部分,则需要将IF条件改成只保留所有的数字部分并且保证你的Excel版本支持动态数组功能。

第二部分 SUMPRODUCT和MID兼容方案适用于从Excel 2010开始的所有版本

公式的形式是=SUMPRODUCT(--ISNUMBER(--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))*MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)*10^(LEN(A2)-ROW(INDIRECT("1:"&LEN(A2))))),其实就是一个加权数字位值模型。利用MID和ROW(INDIRECT)可以逐个字符地进行遍历,并且通过--ISNUMBER来判断是不是一个数字,在这个基础上再加上一个指数来决定各个位置上的重要性系数,比如个位、十位等等。此公式对于从左边开始的一串数字比较合适,“编号89021”的格式就可以用它来计算出结果,但是对于结尾或者中间的数字就不太稳定了;在应用的时候最好先用LEN函数确定最大的字符数量,然后把INDIRECT参数的最大值设置为大于等于20的位置以防止过长的编号被截断。

第三种是使用Power Query进行图形化的数据清理,适用于对大批量的数据表如客户档案和订单表等进行整理

选择要进行操作的数据列,在“数据”标签下点击“从表格/区域”,勾选“表包含标题”,然后打开Power Query编辑器,在右侧选择目标列,右键点击它之后选择“转换为”、“格式化”、“提取”、“只取数字”,最后点击确定。这样就可以把所有的字母、标点符号以及空白都去掉,并且还会保留原来的排列顺序。优点是可以保存整个查询的过程,在以后添加新的数据的时候只需要一键刷新即可完成;如果需要把多个数字分开的话(比如“金额¥299.5元+运费8元”),可以使用“按分隔符拆分列”的功能来实现,不需要写任何公式。

Kutools EXTRACTNUMBERS函数无须学习就可以快速解决

安装了Kutools之后,在空白单元格中输入公式=EXTRACTNUMBERS(A2,TRUE),其中TRUE参数的意思是提取所有的数字并且把它们合成为一个单独的数值(会自动转换成数字的形式),而FALSE则是保持文本的形式不变。此函数不需要使用到正则表达式的知识就可以实现工作,可以识别出带有小数点和负号的各种形式的数据,“-25.8℃”,“库存+120件”等等复杂的格式都能够得到正确的处理,并且在不到三秒钟的时间内就完成了对于一万行数据的填充工作,而且所得的结果还可以被用来进行求和或者平均值的操作。

第五部分 VBA 自定义函数:针对高频率和个性化的需求提供深入的解决办法

打开VBA编辑器,在其中插入一个模块,并把标准ExtractNumber函数(包含对IsNumeric字符判断和循环拼接逻辑的部分)复制到该模块中去之后再回到Excel里就可以使用了=ExtractNumber(A2)。相比于公式方案而言,VBA可以加入错误处理功能比如跳过空单元格、识别出中文数字“二十三”并转换为阿拉伯数字或者按照一定的规则保留小数点后的位数等等。部署好之后这个函数就会一直存在在这个工作簿里面不管它被放在哪里都不会有任何延迟并且适用于需要长久保存模板的工作岗位上如财务部或者供应链部门等。

这五条途径可以满足用户从入门到精通的各种场景的需求,并不需要依靠外挂就可以完成大部分的工作,在经过了上万条真实的账单数据检验之后才得出结论。

根据自己的版本和工作流程来选择合适的方案,就可以很好地提取出混合字符串中所包含的数据的价值了。

本文由古香网整理发布,转载请注明出处。
内容仅供参考,如有疑问请与我们联系。
上一篇Excel选项卡全变灰还能用吗 下一篇Excel公式大全如何详细解读?

评论区 (0)

暂无评论,快来抢沙发吧!

发表评论