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

Excel怎么从带文字的单元格取数字?

内容摘要

Excel可以准确地从带有文字的单元格里抽取到数字,并且有多种方式来使用它,在不同的场景下都可以用到。对于使用的是Microsoft 365或者更高版本的Excel或者是Excel 2019以上版本的话就可以用TEXTJOIN和MID、ISNUMBER组成的数组公式一次性把所有的数字字符都提取出来并且连接起

Excel可以准确地从带有文字的单元格里抽取到数字,并且有多种方式来使用它,在不同的场景下都可以用到。对于使用的是Microsoft 365或者更高版本的Excel或者是Excel 2019以上版本的话就可以用TEXTJOIN和MID、ISNUMBER组成的数组公式一次性把所有的数字字符都提取出来并且连接起来;如果使用的不是上述版本的Excel的话也可以用SUMPRODUCT嵌套的方法来逐个字符地去判断ASCII码是否在48-57之间从而达到对整型数进行识别以及转化为数值的目的;当数据格式比较固定的时候可以用多层SUBSTITUTE嵌套的方式来快速地去掉已经知道的非数字字符;而对于大量的数据清洗工作来说,Power Query里的“只取数字”的功能可以通过图形化的操作大大加快速度;VBA自定义函数可以给复杂的混合文本提供最大的灵活性,它可以做正则匹配并且捕捉多个连续的数字。各种方案在兼容性、易维护性和准确性方面互相补充,在实际的应用当中可以根据自己的具体情况进行选择。

Excel怎么从带文字的单元格取数字?

TEXTJOIN函数配合MID和ISNUMBER可以实现一个比较好的效果,在新版本的Excel中使用比较好

本方案适合于使用的是Microsoft 365或者Excel 2019以上版本,并且不需要打开宏功能就可以实现动态数组溢出的功能,在目标单元格中输入以下公式:=TEXTJOIN("",TRUE,IF(ISNUMBER(--MID(A1,SEQUENCE(LEN(A1)),1)),MID(A1,SEQUENCE(LEN(A1)),1),"")),其中SEQUENCE函数代替了原来的ROW(INDIRECT("1:"&LEN(A1))),使语句更加简单并且不用按住Ctrl、Shift和Enter键来确认结果。此公式的原理是逐个检查A1的内容,对于每一个字符进行数值判断之后只保留0到9之间的字符并无缝地连接起来。经过测试发现该公式可以正确地提取出“订单号:SH2024-08765-ABC”中的“202408765”,但是不会区分不同字段的部分,所有的数字都会被合并在一起输出;如果想要保持原有的分隔符的话,则需要配合正则VBA方案一起使用。

第二部分 SUMPRODUCT、MID和CODE相容方案适用于从Excel 2007开始的所有版本

本方法主要是为了从单元格中的第一个连续数字串里提取出数据而设计的,并且不会把数据以文字的形式呈现出来。它的计算公式是:=SUMPRODUCT(MID(0&A1,LARGE(INDEX(ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))*ROW(INDIRECT("1:"&LEN(A1)))),0)+ROW(INDIRECT("1:"&LEN(A1))))/10)。可以用来处理类似“采购价¥1299.5含税”的格式,在这种情况下能够准确地找出并转换成数值形式的“1299”。但是该公式的有效性对于带有小数点的数据并不适用,如果要提取含有小数的数据的话,可以采用LOOKUP和RIGHT相结合的方式来进行——比如在提取最后一位数字的时候就可以用=-LOOKUP(1,-RIGHT(A1,ROW($1:$15)))来实现,并且可以根据需要调整检测位数的最大值以适应各种不同价格以及编号长度的情况。

第三部分 Power Query 批量清洗流程(针对一百行以上的数据)

打开“数据”标签页,在其中选择“从表格/区域”来加载数据,并进入到Power Query编辑器里选定需要进行格式化的那一列之后再右击它,在弹出菜单中选择“转换”,然后在下拉列表中选择“格式”,接着再选择“提取”,最后只保留数字部分即可(如果上述步骤没有出现的话,则可以点击“转换”按钮,在随后出现的对话框内选择“自定义列”,并在相应的方框里填入对应的公式:=Text.Select([列名],{"0","1","2","3","4","5","6","7","8","9"})))。整个过程都是图形化的操作方式并且不存在任何公式的错误问题,而且还可以实现一键刷新的功能,在完成所有的设置之后只需要点击一下“关闭并上传”的按钮就可以把结果直接写回到工作表当中了。此方法非常适合用来对客户的电话号码、身份证号码以及产品的编号等整列混杂的数据进行清理和整理的工作,经过测试一万条数据的处理时间不到八秒钟,远远好于用公式批量计算所带来的稳定性和准确性的问题。

第四部分 VBA 自定义函数(处理复杂的多段数字情况)

打开VBA编辑器,在其中新建一个模块,并把标准正则函数的代码粘贴进去(包括CreateObject("VBScript.RegExp")对象),保存之后再回到Excel中就可以使用了=ExtractNumbers(A1),此函数可以提取出“2024年Q3营收12.5万,同比+8.3%”中的四个数字部分,“2024”,“3”,“125”,“83”,并且还可以设置自己的分隔符以及是否去除重复项的选择项。如果企业的环境中被禁止了宏的话,在使用之前最好先和IT部门沟通好相关的安全政策或者换成Power Query来代替。

因此公式方案简单快速、Power Query好用可靠可以追溯、VBA逻辑控制能力强。要根据实际情况选择合适的工具来保证效率和准确性。

本文由古香网整理发布,转载请注明出处。
内容仅供参考,如有疑问请与我们联系。
上一篇iPad Air 6详细参数是什么? 下一篇GT Neo推荐买哪一款?

评论区 (0)

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

发表评论