在工作表文本单元格中提取美元金额
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))
理想情况下,我正在寻找的是无论格式如何都能提取美元金额。
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))