Excel VBA-具有大量小数的字符串数据类型的十进制数字始终被解释为大整数(区域小数点分隔符问题)

时间:2018-11-29 13:09:12

标签: excel vba excel-vba

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

案例: 当将字符串转换为数字时,Excel将此解释为千位分隔符,这会造成很多麻烦。

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

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

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

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

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

问题:是否可以模仿或利用Excel将字符串插入单元格时显然使用的此功能,对吗?

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

1 个答案:

答案 0 :(得分:1)

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

  1. 用'X'替换逗号(或其他不会显示在数据中的值)
  2. 用逗号替换句点
  3. 用句点替换“ X”