根据条件计算的时间
我一直在努力弄清这一点,看看有没有人可以给我一些方向,请。根据条件计算的时间
我有一张工作表,我把这些活动通过一天(列W)进行,所以我每天都有一份报告。每个活动都有一个由下拉菜单(列U)中列出的字母定义的类型,例如:'R'为'报告','M'为'会议'等,持续时间以小时为单位HH:mm)(S列)。
我希望我的工作表做的事情是基于它们的类型对活动的所有持续时间进行求和并将结果存储在不同的单元格中。在附图所示的例子中,我必须有3点半的时间才能参加会议 4:30对于举报和2小时图。
以下SumIf代码所做的是总结所有小时数,但它不计算持续时间,一旦持续时间是下一行中的时间与条件参数所在的行之间的时间差是。
Sub test_count_hours()
Range("E35").Value = WorksheetFunction.SumIf(Range("U8:U37"), "R", Range("S8:S37"))
End Sub
所以我的斗争是为了使代码acounting对事件的持续时间。
的实例填充工作表
怎么样在阵列中存储你的活动类型?你可以通过每个活动循环,然后通过各行检查活动类型,并称和下一行之间的时间,如果它是一个匹配循环
Sub sumHours()
Dim activityList As Variant
Dim activity As Variant
Dim rowCount As Integer
Dim countHours As Date
activityList = Array("M", "R", "Dv")
Range("U5").Select
Range(Selection, Selection.End(xlDown)).Select
rowCount = Selection.Rows.Count
For Each activity In activityList
countHours = 0
For i = 5 To rowCount + 5
If Range("U" & i) = activity Then
countHours = countHours + Range("S" & i + 1) - Range("S" & i)
End If
Next i
Select Case activity
Case Is = "M"
Range("E35") = countHours
Case Is = "R"
Range("E36") = countHours
Case Is = "Dv"
Range("E37") = countHours
End Select
Next activity
End Sub
(确保将举行timevalues的单元格的格式与“时间”数据类型相关联
看起来您的活动从第5行开始。如果不是您会改变初始单元格:) – Leroy
谢谢@Leroy,这正是我需要的!感谢所有其他的,当然。 –
如果您需要关于代码的帮助,请将其包含在您的问题中 – braX
您需要'SumIf',但请提及@braX,发布您的代码或您尝试过的内容 – Moacir
你是对的@Moacir,我编辑了我的问题,我只是认为它太简单了,甚至不包括它,但我错了。 –