用于从文本字符串中提取数字的公式

时间:2017-04-26 12:25:32

标签: excel google-sheets

如何仅从Excel或Google表格中的文本字符串中提取数字?例如:

A1 - a1b23eg67
A2 - 15dgrgr156

期望的结果是

B1 - 12367
B2 - 15156

3 个答案:

答案 0 :(得分:4)

您可以使用Google表格中的捕获组

来执行此操作
=REGEXREPLACE(A1,ʺ(\d)|.ʺ,ʺ$1ʺ)

任何与括号(数字)内容相匹配的内容都将被复制到输出中,其他任何内容都被空字符串替换。

请参阅@Max Makhrov对this question

的回答

=regexreplace(A1,ʺ[^\d]ʺ,ʺʺ)

删除任何不是数字的内容。

答案 1 :(得分:3)

因为你也要求Excel,

如果您订阅了Office 365 Excel,那么您可以使用此数组公式:

=--TEXTJOIN("",TRUE,IF(ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)),MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),""))

作为数组公式,需要在退出编辑模式时使用Ctrl-Shift-Enter而不是Enter来确认。如果操作正确,那么Excel会将{}放在公式周围。

enter image description here

答案 2 :(得分:1)

我认为有一种方法可以用=RegexExtract来解决这个问题,但我无法弄清楚如何在第一次点击后重复搜索。通常使用这些正则表达式函数实现有第三个参数重复,但它看起来不像谷歌实现它。

无论如何,以下公式都可以解决问题。这只是一个小小的回旋处:

=concatenate(SPLIT( LOWER(A1) , "abcdefghijklmnopqrstuvwxyz" ))

这是将字符串转换为小写,然后使用字母表中的任何字母拆分字符串。这将返回剩下的数字数组,我们将它们连接在一起。

更新,切换到=REGEXREPLACE()而不是提取......:

=regexreplace(A1, "[a-z]", "")

这比使用concat(split())胡说八道更清晰明了。