我正在创建一个帮助人们自动处理数据的Excel文件。在这张表中,有一些数字必须被解析(并转换为其他单位,等等。简单计算)。
数字采用美国格式,这意味着它们看起来像:
0,000,000.00
在德国,数字显示如下:
0.000.000,00
在VBA中,我实际上不知道,正在使用哪个本地化版本的Excel (德语或英语)。
问题: 是否有一种简单的方法可以将美国格式数字解析为数据类型Double ,而不管用户使用的Excel本地化?
亲切的问候, 本尼迪克特
答案 0 :(得分:5)
一些笔记。我没有更改区域设置以进行测试。
'http://msdn.microsoft.com/en-us/library/office/bb177675(v=office.12).aspx
Debug.Print Application.International(xlCountryCode) 'Excel locale
Debug.Print Application.International(xlCountrySetting) 'Windows locale
sDecimal = Application.International(xlDecimalSeparator)
sThousand = Application.International(xlThousandsSeparator)
sNumber = "1,000,000.00"
If sThousand <> "," Then
If sDecimal <> "." Then
sNumber = Replace(sNumber, ",", "")
sNumber = Replace(sNumber, ".", sDecimal)
End If
End If
Debug.Print sNumber
答案 1 :(得分:1)
可能的解决方案可能是:
cells(y, x) = Val(Replace(cells(y, x).Text, ",", ""))
Val总是使用。作为十进制标记(例如,CDbl使用文化设置,在德语Excel中测试)。