求助:如何在Google Sheets中提取格式不一致的混合文本数字
在Google Sheets中提取格式不统一的数字
核心公式
针对数字格式不统一(千位分隔符用.、小数分隔符用,,或直接用.做小数分隔符)的情况,可使用以下组合函数提取并转换为标准数字格式:
=VALUE(IF(REGEXMATCH(A1,","), SUBSTITUTE(SUBSTITUTE(REGEXEXTRACT(A1,"[\d.,]+"),".",""),",","."), REGEXEXTRACT(A1,"[\d.]+")))
公式拆解
提取数字片段:
REGEXEXTRACT(A1,"[\d.,]+")
从A列单元格中匹配并提取连续包含数字、.和,的片段,比如从in the amount of 1.009,62 EUR中提取1.009,62。判断格式类型:
REGEXMATCH(A1,",")
检查提取的片段是否包含逗号——如果有,说明逗号是小数分隔符,.是千位分隔符;如果没有,.直接作为小数分隔符。格式转换:
- 存在逗号时:先用
SUBSTITUTE(..., ".", "")去掉千位分隔符的.,再用SUBSTITUTE(..., ",", ".")将小数分隔符的,替换为.,比如1.009,62转换为1009.62。 - 不存在逗号时:直接提取数字片段,用
VALUE()转换为数值格式。
- 存在逗号时:先用
转为数值:
VALUE()函数将处理后的文本转换为可计算的数字格式。
示例验证
对应你的模拟数据,公式输出如下:
| A列内容 | B列公式输出 |
|---|---|
| in the amount of $1910.06 on | 1910.06 |
| una transferencia de 15,01 EUR a la | 15.01 |
| received 650,40 € on | 650.40 |
| in the amount of 1.009,62 EUR | 1009.62 |
| montant de € 16.19 vers | 16.19 |
| in the amount of 99.77 PLN | 99.77 |
| in the amount of CDN$ 1209.23 | 1209.23 |
注:你提供的期望输出中650,40对应650.04应为笔误,公式会按原数据转换为650.40。
内容的提问来源于stack exchange,提问作者sunchips
相关产品推荐
相关产品推荐

