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

问题描述 投票:0回答:7

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

示例(输入 -> 输出)

d32Ελληνικάfe9j.r/3-fF66 -> 329366
h01j2j3jFxF$$4j5j6j7j8j9 -> 0123456789
regex google-sheets extract google-sheets-formula array-formulas
7个回答
74
投票

您可以使用

\D+
正则表达式替换所有非数字字符,并将空字符串替换为

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

或将其转换为数字:

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


28
投票

这些适用于整数、小数负数

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


5
投票

如果某些源单元格可能仅包含数字,则首先将值转换为文本,然后使用正则表达式替换会更安全。否则会产生错误。

结果为文本

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

结果为数字

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

整栏都一样

=ARRAYFORMULA(IF(LEN(C1:C), VALUE(REGEXREPLACE(TO_TEXT(C1:C),"\D+", ""))))


2
投票

如果你想提取小数点,你可以使用regexextract:

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

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

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

输出:


1
投票

数组公式变体:

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


0
投票

您可以进行查找和替换(编辑 -> 查找和替换),搜索正则表达式

[^\d]
(任何非数字的内容)并替换为任何内容。


0
投票

块引用 =VALUE(REGEXEXTRACT(B4,"[+-]?[0-9,.]+"))

1,670.87美元>>>> 1670.87

© www.soinside.com 2019 - 2024. All rights reserved.