如何仅从Excel或Google表格中的文本字符串中提取数字?例如:
A1 - a1b23eg67
A2 - 15dgrgr156
期望的结果是
B1 - 12367
B2 - 15156
答案 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会将{}
放在公式周围。
答案 2 :(得分:1)
我认为有一种方法可以用=RegexExtract
来解决这个问题,但我无法弄清楚如何在第一次点击后重复搜索。通常使用这些正则表达式函数实现有第三个参数重复,但它看起来不像谷歌实现它。
无论如何,以下公式都可以解决问题。这只是一个小小的回旋处:
=concatenate(SPLIT( LOWER(A1) , "abcdefghijklmnopqrstuvwxyz" ))
这是将字符串转换为小写,然后使用字母表中的任何字母拆分字符串。这将返回剩下的数字数组,我们将它们连接在一起。
更新,切换到=REGEXREPLACE()
而不是提取......:
=regexreplace(A1, "[a-z]", "")
这比使用concat(split())胡说八道更清晰明了。