希望这是一个愚蠢的问题,答案很简单。
我真的没有选择使用哪种语言,这就是我在Excel中使用VBA进行此操作的原因。
我基本上计算一个月内的总停机时间。我需要在一起添加少量会议记录,以确定总共超过24小时。
以下是该方案:
服务器A本月下降了3小时52分钟 服务器B本月停机了15小时25分钟。
服务器B在关键时段内有7小时23分钟的停机时间,因此将其乘以3将其等同于非关键停机时间。
服务器A有:3小时52分钟x1
服务器B有:8小时2分钟x1
服务器B有:7小时21分钟x3
所有停机时间和恢复时间都以excel识别的时间格式手动列出,例如:
活动1:19/11/2017 5:00:19/11/2017 14:12
活动2:13/11/2017 6:00:13/11/2017 6:40
活动3:13/11/2017 7:57:13/11/2017 9:01
活动4:17/11/2017 6:15:18/11/2017 8:10
不计算周末
仅计算早上6点至下午6点之间的分钟
在某些时间段内,优先级会增加:
06:00-07:00,07:00-09:00,09:00-10:00,10:00-14:00
将高优先级分钟相乘以将峰值时间使用等同于较低的标准时间使用
我正在努力寻找一种方法来将时间加在一起计算小时数,excel试图回答相对于01/01/1900或某些"真实的"日期。
我走的是相反的方式,我有真正的约会,我需要处理他们之间的时间。是否存在平时的数据格式:分钟?
我认为这很明显,但我会清楚地说明,开始时间和结束时间不一定是在同一天。它们可以是任何时间,任何关系,有时开始时间在结束时间之后由于报告故障的方式。显然,在这种情况下计为0分钟。
我目前解决此问题的方法是:
从新的'开始时间'再次开始循环。并循环,直到开始时间和结束时间之间没有剩余分钟
startof:
'move to start of next chargeable day, if not on a chargeable day
'eg weekends, public holidays, easy function to write
Do While testForChargeable() = False
opnDate = DateAdd("d", 1, opnDate)
opnTime = "06:00"
Loop
'check if open time is past the end of chargeable time, 18:00
If (opnTime >= endofdayTime) Then
'move to start of next chargeable day
opnDate = DateAdd("d", 1, opnDate)
opnTime = "06:00"
End If
'check if open time is after close time and fault is excluded
If (opnDate >= bisDate) And (opnTime >= bisTime) Then
GoTo last
End If
'check if close time is on same day as start time
If DateDiff("d", opnDate, bisDate) = 0 Then
'if it is, add minutes between opntime and bistime
chargeTime = chargeTime + calculateChargeTime(opnTime, bisTime)
'calculation ends, loop naturally terminates
Else
'if not, add remaining mintes of day to chargeable time
chargeTime = chargeTime + calculateChargeTime(opnTime, endofdayTime)
'move to start of next day
opnDate = DateAdd("d", 1, opnDate)
opnTime = "06:00"
GoTo startof
End If
last:
干杯