VBAで計算誤差がでます。 ?
以前作成したコードを見直しています。
例えば、
A2 : 1. plat_form (5:50)
A3: 2. cloud Two (4:12)
の場合、マクロを実施すると
B2: 0:05:50
B3: 0:04:12
と表示されました。
C列にはB列を秒([s].000)に変更後に文字列に変換した値が出るはずが
以下のように変な値になっています。
(------> の右の値は、C列をクリックしたときに数式バー表示される値です。
C2をクリックすると数式バーに「0:05:46」と表示される。
実際は、「0:05:50」のはずで350.000が正解のはずで誤差が出る?)
C2: 345.600 -----> 0:05:46
C3: 259.200 -----> 0:04:19
これは、EXCELの計算誤差なのでしょうか?
その場合、
正常に表示されるコードを教えて下さい。
以下のコードを参照ください。------------------
Option Explicit
Sub ①時間相当の抜き出し()
Dim i As Double
Dim LSN As Double
'処理列の個数
LSN = Cells(Rows.Count, "A").End(xlUp).Row
'B列の文字列で最後から検索して検索文字より右側を抜き出す
For i = 2 To LSN
Cells(i, "B") = "0:" & カッコ内の文字列を取得する(Cells(i, "A"), "(", ")")
Cells(i, "C").Value = Format(Cells(i, "B"), "[s].000")
Next
End Sub
Function カッコ内の文字列を取得する( _
元の文字列 As String, _
Optional 開くカッコ As String = "(", _
Optional 閉じカッコ As String = ")") _
As String
Dim pos_a As Long ' 開くカッコの位置
Dim pos_z As Long ' 閉じカッコの位置
pos_a = InStr(1, 元の文字列, 開くカッコ)
pos_z = InStr(pos_a + 1, 元の文字列, 閉じカッコ)
カッコ内の文字列を取得する = _
Mid(元の文字列, pos_a + 1, pos_z - pos_a - 1)
End Function