具有小数位数的字符串数据类型的小数始终被解释为大整数(区域小数分隔符问题)

问题描述 投票:1回答:1

背景:我正在从JSON格式的API接收Excel应用程序的数据。为此,我将数值作为字符串接收,因为以JSON发送的所有内容自然都是文本格式,因此VBA也会对其进行解释。因为我位于丹麦,所以使用了与Excel中的本机不同的十进制分隔符(我的丹麦语版本使用,作为分隔符,而不是.)。

Case:这会造成很多麻烦,因为在将字符串转换为数字时,Excel会将其解释为千位分隔符。

搜索答案,我发现最好的解决方案通常是在使用VBA时通过CDbl(string to convert to number)将字符串转换为两倍。

通常是这种情况,但就我而言,我收到的数字带有很多小数,例如:“ 9.300000190734863”。

[执行CDbl("9.300000190734863")时会产生非常大的整数:9,30000019073486E+15

[此外,我也不认为在我的情况下使用replace()方法是可行的,因为我可能同时拥有同时使用十进制和千位分隔符的数据,这使我的结果容易出现替换错误。

但是,在我的情况下,将字符串值直接插入Excel中的单元格会将数字正确转换为9,30000019073486

问题:是否可以正确地模仿或利用Excel在将字符串插入单元格时明显使用的此功能?

我已经搜索了很长时间,除了显而易见的之外,我没有找到其他解决方案:将值插入单元格。这里的问题是,这给了我一些性能上的开销,我宁愿避免。

excel vba
1个回答
1
投票

您可以通过三个步骤将输入中的句点和逗号的位置转换为双精度,然后将其转换为双精度:

  1. 用'X'替换逗号(或其他不会显示在数据中的值)
  2. 用逗号替换句点
  3. 用句号替换'X'
© www.soinside.com 2019 - 2024. All rights reserved.