Excel VBA将秒转换为HH:MM:SS
试图在整个工作表中转换特定列中的特定数据 这是我的当前代码,它不会出错,但是它不能正确显示第一个结果(显示00:00:00),并且只在第一条记录处停止Excel VBA将秒转换为HH:MM:SS,vba,excel,Vba,Excel,试图在整个工作表中转换特定列中的特定数据 这是我的当前代码,它不会出错,但是它不能正确显示第一个结果(显示00:00:00),并且只在第一条记录处停止 Sub CleanEntry() Dim i As Integer Dim Seconds As Integer Dim j As Long Dim c As Long j = 2 For i = Sheet1.UsedRange.Rows.Count To 1 Step -1 c = Range("B" & j
Sub CleanEntry()
Dim i As Integer
Dim Seconds As Integer
Dim j As Long
Dim c As Long
j = 2
For i = Sheet1.UsedRange.Rows.Count To 1 Step -1
c = Range("B" & j).Value
c = c / 86400
Range("B" & j).Value = Format(c, "hh:mm:ss")
j = j + 1
Next
End Sub
虽然我不明白您为什么使用两个计数器,一个向后,另一个向前,但这可以通过一行完成:
Sub CleanEntry()
Dim i As Long
Dim j As Long
j = 2
For i = Sheet1.UsedRange.Rows.Count To 1 Step -1
Range("B" & j).Value = Format(TimeSerial(0, 0, Range("B" & j).Value), "hh:mm:ss")
j = j + 1
Next
End Sub
虽然我不明白您为什么使用两个计数器,一个向后,另一个向前,但这可以通过一行完成:
Sub CleanEntry()
Dim i As Long
Dim j As Long
j = 2
For i = Sheet1.UsedRange.Rows.Count To 1 Step -1
Range("B" & j).Value = Format(TimeSerial(0, 0, Range("B" & j).Value), "hh:mm:ss")
j = j + 1
Next
End Sub
由于
c
很长,使用c=c/86400
将其存储为双精度可能会丢失相当多的信息?long类似于整数,因为它会删除小数。因为时间是十进制的,所以它完全去掉了时间。因此,是的,将其设置为双精度。由于c
很长,使用c=c/86400
将其存储为双精度可能会丢失相当多的信息?long类似于整数,因为它会删除小数。因为时间是十进制的,所以它完全去掉了时间。所以,是的,让它加倍。这彻底解决了问题。我根本没有想到时间序列。谢谢这彻底解决了问题。我根本没有想到时间序列。谢谢