在工作表文本单元格中提取美元金额

Extract dollar amount in sheets text cell

理想情况下,我正在寻找的是无论格式如何都能提取美元金额。

Sheet link:
https://docs.google.com/spreadsheets/d/1drTPlnQmVTsbUXwJDfQr7DnHjSbnGx-fLthad6KxfM8/edit?usp=sharing

删除 B 列中的所有内容,包括 header。然后将以下公式放入单元格 B1:

=ArrayFormula({"Header"; IF(A2:A="",,VALUE(IFERROR(REGEXEXTRACT(A2:A,"$(\d+\.?\d*)"))))})

您可以根据需要更改公式中的 header 文本。

如果 A2:A 中的单元格为空,则 B2:B 中的相应单元格也将留空。

否则 REGEXEXTRACT 将查找以文字美元符号开头的模式。引号内的括号表示捕获组的开头和结尾(即,如果找到,将返回什么)跟在文字美元符号之后。模式 \d+\.?\d* 表示“一组一个或多个数字,后跟零个或一个文字句点符号,再后跟零个或多个数字。”

如果无法提取此类模式,

IFERROR 将导致呈现 null 而不是错误。

VALUE 会将提取的字符串(或空值)转换为实数。

如果您希望在未找到模式匹配的情况下返回 null 而不是 0,则可以改用以下公式变体:

=ArrayFormula({"Header"; IFERROR(VALUE(IFERROR(REGEXEXTRACT(A2:A,"$(\d+\.?\d*)"),"x")))})

如果您的字符串可能包含带逗号分隔符的数字,请分别使用上述两个公式的以下版本:

=ArrayFormula({"Header V1"; IF(A2:A="",,VALUE(IFERROR(REGEXEXTRACT(SUBSTITUTE(A2:A,",",""),"$(\d+\.?\d*)"))))})

=ArrayFormula({"Header V2"; IFERROR(VALUE(IFERROR(REGEXEXTRACT(SUBSTITUTE(A2:A,",",""),"$(\d+\.?\d*)"),"x")))})

尝试:

=INDEX(IFNA(REGEXEXTRACT(A2:A, "$(\d+.\d+|\d+)")*1))