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

qyuhtwio  于 2023-03-09  发布在  其他
关注(0)|答案(4)|浏览(211)

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

A1 - a1b23eg67
A2 - 15dgrgr156

预期结果为

B1 - 12367
B2 - 15156
mcdcgff0

mcdcgff01#

您可以在Google工作表中使用捕获组进行此操作

=REGEXREPLACE(A1,ʺ(\d)|.ʺ,ʺ$1ʺ)

与括号内容匹配的任何内容(一个数字)都将被复制到输出中,其他任何内容都将被替换为空字符串。
请看@Max Makhrov对这个问题的回答

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

去掉任何不是手指的东西。

wztqucjr

wztqucjr2#

因为你还要求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将在公式周围放置{}

7hiiyaii

7hiiyaii3#

我可以想象=RegexExtract有一种方法可以做到这一点,但我不知道如何让它在第一次命中后重复搜索,通常这些regex函数的实现有第三个参数要重复,但看起来谷歌并没有实现它。
无论如何,下面的公式可以解决这个问题,只是有点绕圈子:

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

这是将字符串转换为小写,然后使用字母表中的任意字母拆分字符串。这将返回一个剩余数字的数组,我们将其连接起来。
更新,切换到=REGEXREPLACE()而不是提取...:

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

这是一种比concat(split())更简洁明了的方法。

r1wp621o

r1wp621o4#

请尝试此公式,它肯定会解决您的问题= REGEXEXEXTRACT(A1,"\d+”)

相关问题