如何从Excel或Google工作表中的文本字符串中只提取数字?例如:
A1 - a1b23eg67 A2 - 15dgrgr156
预期结果为
B1 - 12367 B2 - 15156
mcdcgff01#
您可以在Google工作表中使用捕获组进行此操作
=REGEXREPLACE(A1,ʺ(\d)|.ʺ,ʺ$1ʺ)
与括号内容匹配的任何内容(一个数字)都将被复制到输出中,其他任何内容都将被替换为空字符串。请看@Max Makhrov对这个问题的回答或
=regexreplace(A1,ʺ[^\d]ʺ,ʺʺ)
去掉任何不是手指的东西。
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将在公式周围放置{}。
{}
7hiiyaii3#
我可以想象=RegexExtract有一种方法可以做到这一点,但我不知道如何让它在第一次命中后重复搜索,通常这些regex函数的实现有第三个参数要重复,但看起来谷歌并没有实现它。无论如何,下面的公式可以解决这个问题,只是有点绕圈子:
=RegexExtract
=concatenate(SPLIT( LOWER(A1) , "abcdefghijklmnopqrstuvwxyz" ))
这是将字符串转换为小写,然后使用字母表中的任意字母拆分字符串。这将返回一个剩余数字的数组,我们将其连接起来。更新,切换到=REGEXREPLACE()而不是提取...:
=REGEXREPLACE()
=regexreplace(A1, "[a-z]", "")
这是一种比concat(split())更简洁明了的方法。
r1wp621o4#
请尝试此公式,它肯定会解决您的问题= REGEXEXEXTRACT(A1,"\d+”)
4条答案
按热度按时间mcdcgff01#
您可以在Google工作表中使用捕获组进行此操作
与括号内容匹配的任何内容(一个数字)都将被复制到输出中,其他任何内容都将被替换为空字符串。
请看@Max Makhrov对这个问题的回答
或
去掉任何不是手指的东西。
wztqucjr2#
因为你还要求Excel,
如果您订阅了office 365 Excel,则可以使用此数组公式:
作为一个数组公式,在退出编辑模式时需要使用Ctrl-Shift-Enter而不是Enter进行确认。如果操作正确,Excel将在公式周围放置
{}
。7hiiyaii3#
我可以想象
=RegexExtract
有一种方法可以做到这一点,但我不知道如何让它在第一次命中后重复搜索,通常这些regex函数的实现有第三个参数要重复,但看起来谷歌并没有实现它。无论如何,下面的公式可以解决这个问题,只是有点绕圈子:
这是将字符串转换为小写,然后使用字母表中的任意字母拆分字符串。这将返回一个剩余数字的数组,我们将其连接起来。
更新,切换到
=REGEXREPLACE()
而不是提取...:这是一种比concat(split())更简洁明了的方法。
r1wp621o4#
请尝试此公式,它肯定会解决您的问题= REGEXEXEXTRACT(A1,"\d+”)