首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从文本字符串中提取数字的公式

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

Stack Overflow用户
提问于 2017-04-26 20:25:32
回答 3查看 13.5K关注 0票数 2

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

代码语言:javascript
运行
复制
A1 - a1b23eg67
A2 - 15dgrgr156

所需结果为

代码语言:javascript
运行
复制
B1 - 12367
B2 - 15156
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-26 20:54:03

您可以在Google Sheets中使用捕获组来完成此操作

代码语言:javascript
运行
复制
=REGEXREPLACE(A1,ʺ(\d)|.ʺ,ʺ$1ʺ)

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

请参阅@Max Makhrov对this question的回答

代码语言:javascript
运行
复制
=regexreplace(A1,ʺ[^\d]ʺ,ʺʺ)

删除任何不是数字的东西。

票数 7
EN

Stack Overflow用户

发布于 2017-04-26 21:10:51

因为你也要了Excel

如果您订阅了office 365 Excel,则可以使用此数组公式:

代码语言:javascript
运行
复制
=--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将在公式周围放置{}

票数 3
EN

Stack Overflow用户

发布于 2017-04-26 20:50:08

我想有一种方法可以用=RegexExtract实现这一点,但我想不出如何让它在第一次命中后重复搜索。在这些regex函数实现中,经常会有第三个参数需要重复,但看起来google并没有实现它。

无论如何,下面的公式可以解决这个问题。这只是一个小的环形交叉路口:

代码语言:javascript
运行
复制
=concatenate(SPLIT( LOWER(A1) , "abcdefghijklmnopqrstuvwxyz" ))

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

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

代码语言:javascript
运行
复制
=regexreplace(A1, "[a-z]", "")

这是一种比concat(split())的废话更清晰和明显的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43634174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档