将值(使用 VBA 代码,而不是通过导出到 CSV)从 Excel 电子表格导出到文本文件时出现问题。
使用这些数字:
- (formatted so 0 displays as "-")
0.10000000
0.0166666666666667
If I debug.print the .Text then .Value property of each cell, the results are:
- --> 0
0.10000000 --> 0.1
0.01666667 --> 1.66666666666667E-02
我的问题是,我想避免发生 0.0166666666666667 (在电子表格单元格中)-> 1.66666666666667E-02 (在单元格的 .Value 属性中)发生转换。
如果我改为读取 .Text 属性,结果会根据需要以小数形式出现,但问题是格式化为“-”的 0 被导出为“-”。
是否有一种“正确”的方法可以在所有情况下都有效地处理这个问题?
我必须在多个电子表格中使用最终解决方案,并且我无法控制每个电子表格中的显示格式设置或每个单元格的内容(即:不保证是数字数据)
示例代码
Public Function test()
Dim cell As Range: Set cell = Worksheets("Sheet1").Range("A1")
Dim i As Integer
Dim vSingle As Single
Dim vVariant As Variant
Dim vDouble As Double
For i = 0 To 4
vSingle = cell.Offset(i, 0).Value
vVariant = cell.Offset(i, 0).Value
vDouble = cell.Offset(i, 0).Value
Debug.Print cell.Offset(i, 0).Text & " --> " & cell.Offset(i, 0).Value & " : " & vSingle & " : " & vVariant & " : " & vDouble
Next
End Function
结果是:
- --> 0 : 0 : 0 : 0
0.10000000 --> 0.1 : 0.1 : 0.1 : 0.1
0.01666667 --> 1.66666666666667E-02 : 1.666667E-02 : 1.66666666666667E-02 : 1.66666666666667E-02
--> : 0 : : 0
--> : 0 : : 0