Excel スプレッドシートからテキスト ファイルに値を (CSV へのエクスポートではなく、VBA コードを使用して) エクスポートするときに問題が発生します。
これらの数値を使用して:
- (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.01666666666666667 (視覚的にスプレッドシート セル内) --> 1.66666666666667E-02 (セルの .Value プロパティ内) 変換が発生するのを避けたいことです。
代わりに .Text プロパティを読み取ると、結果は必要に応じて 10 進数として出力されますが、問題は、「-」としてフォーマットされた 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