For i = 3 To lastRow endTime = CDate(ws.Range("F" & i).Value) startTime = CDate(ws.Range("E" & i).Value) ' 提取日期和时间部分 startDate = DateValue(startTime) startTime = TimeValue(startTime) endDate = DateValue(endTime) endTime = TimeValue(endTime) ' 处理日期跨天的情况 If endDate > startDate Then hoursDiff = 24 ' 计为24小时 Else hoursDiff = DateDiff("h", startTime, endTime) End If minutesDiff = DateDiff("n", startTime, endTime) Mod 60 totalHours = hoursDiff + minutesDiff / 60 ' 将小时和分钟差异写入G列(格式为小数) ws.Range("G" & i).Value = totalHours Next i結果保留兩位
时间: 2024-04-21 08:22:56 浏览: 89
Middleware-Middleware.zip
要将结果保留两位小数,您可以使用VBA的`Format`函数来格式化`totalHours`变量。以下是修改后的代码:
```vba
For i = 3 To lastRow
endTime = CDate(ws.Range("F" & i).Value)
startTime = CDate(ws.Range("E" & i).Value)
' 提取日期和时间部分
startDate = DateValue(startTime)
startTime = TimeValue(startTime)
endDate = DateValue(endTime)
endTime = TimeValue(endTime)
' 处理日期跨天的情况
If endDate > startDate Then
hoursDiff = 24 ' 计为24小时
Else
hoursDiff = DateDiff("h", startTime, endTime)
End If
minutesDiff = DateDiff("n", startTime, endTime) Mod 60
totalHours = hoursDiff + minutesDiff / 60
' 将小时和分钟差异写入G列并保留两位小数
ws.Range("G" & i).Value = Format(totalHours, "0.00")
Next i
```
将上述代码复制并替换原始代码中的循环部分,然后运行修改后的代码。它将计算小时差异和分钟差异,并将结果合并为小时和分钟的形式,然后将结果写入G列并保留两位小数。
例如,如果结果为4小时30分钟,则会以4.50的形式显示。
希望对您有所帮助!如果您有任何其他问题,请随时提问。
阅读全文