从字符串中提取数字 - Google电子表格

38

在Google电子表格中,我需要一个公式来提取任意字符串中包含的所有数字(0到9),该字符串可能包含任何可能的字符,并将它们放入单个单元格中。

示例(输入->输出)

d32Ελληνικάfe9j.r/3-fF66 -> 329366
h01j2j3jFxF$$4j5j6j7j8j9 -> 0123456789
6个回答

74

您可以使用\D+正则表达式和一个空字符串替换来替换所有非数字字符

=REGEXREPLACE(A11,"\D+", "")

或将其转换为数字:

=VALUE(REGEXREPLACE(A11,"\D+", ""))

enter image description here


28

这些可以用于整数、小数负数

=REGEXEXTRACT(A2,"-*\d*\.?\d+")
=VALUE(REGEXEXTRACT(A2,"-*\d*\.?\d+"))

正则表达式负小数-Google Sheets函数


这是一个有用的答案,感谢您的发布。然而,问题不是关于提取数字,而只是从0到9的数字。 - thanos.a
3
我在搜索如何解析Google表格中的数字时,发现这个问题是我搜索结果的首选。我知道这并不是技术上正确的答案,但这确实是我需要的答案。 - magikid

5
如果源单元格中可能只包含数字,则最好先将值转换为文本,然后使用regexreplace。否则会产生错误。
结果以文本形式呈现
=REGEXREPLACE(TO_TEXT(C1),"\D+", "")

结果作为数字呈现

=VALUE(REGEXREPLACE(TO_TEXT(C1),"\D+", ""))

整列应用相同的操作
=ARRAYFORMULA(IF(LEN(C1:C), VALUE(REGEXREPLACE(TO_TEXT(C1:C),"\D+", ""))))

enter image description here


2

如果您想提取带有小数点的内容,可以使用regexextract函数:

=VALUE(REGEXEXTRACT(B4,"[0-9]*\.[0-9]+[0-9]+"))

提取数字、小数和2位有效数字的示例:

=VALUE(REGEXEXTRACT(A1,"[0-9]*\.[0-9]+[0-9]+"))

输出:

提取数字、小数和2个有效数字


这段代码只适用于像这样的特殊情况,对于我的示例则不起作用。 - thanos.a
认为其他人可能会从更多的用例中受益,而regextract比上面的示例更有用。 - nk abram
可能是,但解决的是不同的问题,例如:“从带有度量单位的值中检索值。我会让管理员决定。” - thanos.a
2
我需要提取带有小数的内容,这个公式可以在随机句子中使用:=REGEXEXTRACT(H13, "\d+.\d+")。 - syonip

1

数组公式变量:

=ARRAYFORMULA(IF(A1:A<>""; REGEXREPLACE(A1:A; "\D+"; )*1; ))

0


0
你可以使用查找和替换功能(编辑 -> 查找和替换),搜索正则表达式[^\d](任何非数字字符)并将其替换为空。

enter image description here


我忘了添加这需要是一个公式,以便在数据到来时能够工作。 - thanos.a

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接