我正在尝试将我的数据转换为以小时,分钟和秒为单位显示。我目前仅在几个小时内显示数据,但是由于我格式化的方式,它正在向上或向下取整。
我要从中提取的服务器在几秒钟内提取了数据,因此我只需做一下(Sum(AuxTime)/3600.0)就将其转换为小时。但我需要[H]:mm:ss格式。
我尝试过然后直接从Access查询(AuxTime)中的服务中提取数据。然后在我的VBA模块中,我将数字格式设置如下:
With .PivotFields("Aux_Time")
.Orientation = 4
.Function = -4157
.NumberFormat = "[h]:mm:ss"
.Caption = "Time Spent in Aux Time"
End With
但是,并不是将数据以这种格式放置,而是将所有秒数都放置在小时区域中。
我还有什么想念的吗?
答案 0 :(得分:0)
自从您询问与VBA有关的问题...
Format(12345.123,"hh:mm:ss") results in 02:57:07
Format(#12/31/2018 15:32:01#,"hh:mm:ss") results in 15:32:01
第一个例子似乎就是您的情况,不是吗?
它在查询中应该做同样的事情。
答案 1 :(得分:0)
您将需要一个自定义功能。但是,首先将秒转换为时间值(每天86400秒),然后将其格式化为文本:
Display = FormatHourMinuteSecond(CDate(Sum(AuxTime) / 86400))
使用如下函数:
Public Function FormatHourMinuteSecond( _
ByVal datTime As Date, _
Optional ByVal strSeparator As String = ":") _
As String
' Returns count of days, hours, minutes, and seconds of datTime
' converted to hours, minutes, and seconds as a formatted string
' with an optional choice of time separator.
'
' Example:
' datTime: #10:03:55# + #20:01:24#
' returns: 30:05:19
'
' 2014-06-17. Cactus Data ApS, CPH.
Dim strHour As String
Dim strMinuteSec As String
Dim strHours As String
strHour = CStr(Fix(datTime) * 24 + Hour(datTime))
' Add leading zero to minute and second count when needed.
strMinuteSec = Right("0" & CStr(Minute(datTime)), 2) & strSeparator & Right("0" & CStr(Second(datTime)), 2)
strHours = strHour & strSeparator & strMinuteSec
FormatHourMinuteSecond = strHours
End Function ' Add leading zero to minute count when needed.
strMinute = Right("0" & CStr(Minute(datTime)), 2)
strHourMinute = strHour & strSeparator & strMinute
FormatHourMinute = strHourMinute
End Function