所以我在MS Access 2010中有一个表,如下所示:
Date Pers. ID Dauer Tätigkeit
10.04.2016 10 01:15
11.05.2016 5 05:00
...
我想得到“DauerTätigkeit”的总时数。 “DauerTätigkeit”中的所有条目均为日期格式。
下面的公式应该用于以“1346:30”之类的格式列出结尾。它实际上完成了小数据集的工作。
我必须使用的数据集有大约800个条目,每小时平均3小时。所以我期待在大约2400到8000小时的球场中获得一个数字,如果我用23:59填满每一行,它应该最多给我一个低于20.000的数字。 我得到的数字远远超过100万。
当小时总数小于大约500时,错误消失(我通过将条目数减半而不是进一步测试了这一点)。所以我想,我在某个地方遇到了溢出问题。
现在问题在哪里。可能发生这种情况的明显点是刚刚开始的“Int”,但是从公式中删除它并不能解决它。
=Format(Int(Summe([Dauer Tätigkeit]))*24+Stunde(Summe([Dauer Tätigkeit]));"00")
& ":" & Format(Minute(Summe([Dauer Tätigkeit]));"00")
我现在的问题是: 有语法问题吗? 这是溢出问题吗? 可以为LongInt演员解决吗?如果是,如何将其实施到公式中? 我问的是正确的问题吗?
答案 0 :(得分:0)
始终将日期视为日期,而不是字符串,不长,也不是货币。
此功能可以:
Public Function FormatHourMinute( _
ByVal datTime As Date, _
Optional ByVal strSeparator As String = ":") _
As String
' Returns count of days, hours and minutes of datTime
' converted to hours and minutes as a formatted string
' with an optional choice of time separator.
'
' Example:
' datTime: #10:03# + #20:01#
' returns: 30:04
'
' 2005-02-05. Cactus Data ApS, CPH.
Dim strHour As String
Dim strMinute As String
Dim strHourMinute As String
strHour = CStr(Fix(datTime) * 24 + Hour(datTime))
' Add leading zero to minute count when needed.
strMinute = Right("0" & CStr(Minute(datTime)), 2)
strHourMinute = strHour & strSeparator & strMinute
FormatHourMinute = strHourMinute
End Function
对于您的示例,输出将为:
Result = FormatHourMinute(#23.59# * 800)
' Result -> 19186:40
你的表达将是:
=FormatHourMinute(Summe([Dauer Tätigkeit]))