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

tha*_*s.a 14 regex extract google-sheets array-formulas google-sheets-formula

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

示例(输入 - >输出)

d32????????fe9j.r/3-fF66 -> 329366
h01j2j3jFxF$$4j5j6j7j8j9 -> 0123456789
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 32

您可以使用\D+正则表达式替换所有非数字字符,并使用空字符串替换

=REGEXREPLACE(A11,"\D+", "")
Run Code Online (Sandbox Code Playgroud)

或者将其转换为数字:

=VALUE(REGEXREPLACE(A11,"\D+", ""))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Zyg*_*ygD 6

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

=REGEXEXTRACT(A2,"-*\d*.?\d+")
=VALUE(REGEXEXTRACT(A2,"-*\d*.?\d+"))
Run Code Online (Sandbox Code Playgroud)

正则表达式负小数-Google表格功能

  • 我发现这个问题是我搜索如何解析 Google 表格中的数字的首要结果。我知道从技术上讲这不是问题的正确答案,但这是我需要的答案。 (3认同)

Kri*_*aan 5

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

结果为文本

=REGEXREPLACE(TO_TEXT(C1),"\D+", "")
Run Code Online (Sandbox Code Playgroud)

结果为数字

=VALUE(REGEXREPLACE(TO_TEXT(C1),"\D+", ""))
Run Code Online (Sandbox Code Playgroud)

整列相同

=ARRAYFORMULA(IF(LEN(C1:C), VALUE(REGEXREPLACE(TO_TEXT(C1:C),"\D+", ""))))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述