Google是否更改了函数VALUE()?

时间:2019-01-25 07:49:29

标签: google-sheets

“一千美元和一美分”在美国被标记为1000.01,在世界其他地方则被标记为1000,01

为解决此问题,我使用下面的公式转换输入的金额

=VALUE(SUBSTITUTE(A1;".";",")

此公式将1000,011000.01都转换为1000,01

但是多年来一直有效的非常相同的公式给出了100001作为结果

我是唯一遇到此问题的人吗? 还是Google有所改变?

电子表格示例

https://docs.google.com/spreadsheets/d/1HfNEGVjzwf6Xil7vbv69F3ii6nryyDh8f6Z2ELqS5N8/edit?usp=sharing

更新: 看来这取决于用户。 有些用户在同一时间在同一电子表格中获得了正确的值,而其他用户则获得了这些值的100倍。

另请参阅:

https://webapps.stackexchange.com/questions/79051/how-to-convert-all-numbers-regardless-of-decimal-separator-into-valid-number-of

2 个答案:

答案 0 :(得分:1)

您提供的工作表示例是荷兰语言环境,其中 1000,01 是有效数字(您可以使用 =ISNUMBER(A2) 进行测试),即 =VALUE(SUBSTITUTE(A3; "."; ",") 起作用的原因。

菲。 -将 =VALUE(SUBSTITUTE(A2; "."; ",") 用作 1000,01 是双重杀伤力,因为 1000,01 已经是数值,并且在那里没什么可替代的

如果您使用具有美国语法的电子表格,则有效数字为 1000.01 ,因此,用 {{ 1}} 会使它无效-这就是为什么您得到 . 的原因(因为逻辑上说:要从无效来源输出值-类似于 ,

本地化设置可以在这里更改: 4

答案 1 :(得分:1)

该问题的公式要求A1上的值是文本。在链接的电子表格上,上面的公式失败了,因为引用的单元格的值是一个使用点作为千位分隔符并使用逗号作为十进制分隔符的数字。

以下内容应同时使用数字和文本作为输入:

=IFERROR(VALUE(SUBSTITUTE(TEXT(A4;"0,00"); ","; ".")); VALUE(SUBSTITUTE(TEXT(A4;"0.00"; "."; ","))))


answerHow to convert all numbers regardless of decimal separator into valid number of current locale?

  

以下公式可以完成此任务(在美国和俄罗斯进行了测试,   语言环境,其中分隔符不同):

=IFERROR(VALUE(SUBSTITUTE(A2, ",", ".")), VALUE(SUBSTITUTE(A2, ".", ",")))
     

说明:

     
      
  • IFERROR返回第一个参数,除非抛出错误,在这种情况下,它返回第二个参数。
  •   
  • IFERROR的第一个参数是将文本(用逗号替换点号)转换为数字的结果。
  •   
  • IFERROR的第二个参数是将文本(其中任何点用逗号替换)转换为数字的结果。
  •   
     

我假设在每个语言环境中,以下两种情况之一都会起作用。