Excel从字符串中提取数字
在日常工作中,我们经常需要对一些包含数字的字符串进行处理,并将其中的数字提取出来用于计算或者分析。在Excel中,提取字符串中的数字是一个常见的操作。本文将详细介绍在Excel中从字符串中提取数字的几种常见方法。
方法一:使用文本函数
在Excel中,有一些文本函数可以用于处理字符串,如LEFT、RIGHT和MID等函数。我们可以借助这些函数的使用,来提取字符串中的数字。
假设我们有以下字符串需要提取数字:
A | B |
---|---|
文本 | 提取的数字 |
ABC123 | ? |
在B2单元格中,输入以下公式:
=MID(A2,MIN(IFERROR(SEARCH({0,1,2,3,4,5,6,7,8,9},A2),"")),SUMPRODUCT(1-ISNUMBER(--MID(A2,ROW(INDIRECT(MIN(IFERROR(SEARCH({0,1,2,3,4,5,6,7,8,9},A2),"")),1))):ROW(INDIRECT(MAX(IFERROR(SEARCH({0,1,2,3,4,5,6,7,8,9},A2),"")),1)),1))))
该公式使用了MID、IFERROR、SEARCH、MIN、ROW、INDIRECT和SUMPRODUCT等函数,实现了从字符串中提取数字的功能。运行结果如下:
A | B |
---|---|
文本 | 提取的数字 |
ABC123 | 123 |
需要注意的是,这是一个数组公式,需要使用Ctrl+Shift+Enter键盘组合键来确认输入。确认输入后,公式单元格会自动添加大括号。
方法二:使用正则表达式
Excel的正则表达式函数提供了更加灵活和高效的方式来从字符串中提取数字。在Excel 2016及以上版本中,我们可以使用REGEXEXTRACT函数来应用正则表达式。
假设我们有以下字符串需要提取数字:
A | B |
---|---|
文本 | 提取的数字 |
ABC123#xyz456 | ? |
在B2单元格中,输入以下公式:
=IFERROR(--REGEXEXTRACT(A2,"\d+"),"")
该公式使用了REGEXEXTRACT函数,通过正则表达式”\d+”从字符串中提取数字。运行结果如下:
A | B |
---|---|
文本 | 提取的数字 |
ABC123#xyz456 | 123 |
方法三:使用辅助列和函数
除了上述方法,我们还可以借助辅助列和一些函数来提取字符串中的数字。这种方法虽然比较繁琐,但在一些特殊情况下比较有用。
假设我们有以下字符串需要提取数字:
A | B | C |
---|---|---|
文本 | 第一个数字 | 第二个数字 |
A123B456C789 | ? | ? |
在B2单元格中,输入以下公式:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,MID(A2,MIN(IFERROR(FIND({0,1,2,3,4,5,6,7,8,9},A2),"")),SUMPRODUCT(1-ISNUMBER(--MID(A2,ROW(INDIRECT(MIN(IFERROR(FIND({0,1,2,3,4,5,6,7,8,9},A2),"")),1))):ROW(INDIRECT(MAX(IFERROR(FIND({0,1,2,3,4,5,6,7,8,9},A2),"")),1)),1)))),"",A2),MID(SUBSTITUTE(A2,MID(A2,MIN(IFERROR(FIND({0,1,2,3,4,5,6,7,8,9},A2),"")),SUMPRODUCT(1-ISNUMBER(--MID(A2,ROW(INDIRECT(MIN(IFERROR(FIND({0,1,2,3,4,5,6,7,8,9},A2),"")),1))):ROW(INDIRECT(MAX(IFERROR(FIND({0,1,2,3,4,5,6,7,8,9},A2),"")),1)),1)))),"",A2),MIN(IFERROR(FIND({0,1,2,3,4,5,6,7,8,9},SUBSTITUTE(A2,MID(A2,MIN(IFERROR(FIND({0,1,2,3,4,5,6,7,8,9},A2),"")),SUMPRODUCT(1-ISNUMBER(--MID(A2,ROW(INDIRECT(MIN(IFERROR(FIND({0,1,2,3,4,5,6,7,8,9},A2),"")),1))):ROW(INDIRECT(MAX(IFERROR(FIND({0,1,2,3,4,5,6,7,8,9},A2),"")),1)),1)))),""))),"")),SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,MID(A2,MIN(IFERROR(FIND({0,1,2,3,4,5,6,7,8,9},... ...
在C2单元格中,输入以下公式:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,MID(A2,MIN(IFERROR(FIND({0,1,2,3,4,5,6,7,8,9},A2),"")),SUMPRODUCT(1-ISNUMBER(--MID(A2,ROW(INDIRECT(MIN(IFERROR(FIND({0,1,2,3,4,5,6,7,8,9},A2),"")),1))):ROW(INDIRECT(MAX(IFERROR(FIND({0,1,2,3,4,5,6,7,8,9},A2),"")),... ...
这两个公式使用了一系列的SUBSTITUTE、MID、MIN、IFERROR、FIND、ROW、INDIRECT、SUMPRODUCT和ISNUMBER等函数,来完成字符串中数字的提取。
运行结果如下:
A | B | C |
---|---|---|
文本 | 第一个数字 | 第二个数字 |
A123B456C789 | 123 | 456 |
以上是三种常见的在Excel中从字符串中提取数字的方法。根据具体情况,选择合适的方法进行处理。