我有类似这样的数据
-Name Duration
-Session 1 00:00:30
-Session 1 00:01:30
-Session 1 01:00:30
-Session 2 00:00:30
-Session 2 00:00:30
-Session 2 01:00:30
-Session 1 00:00:45
-Session 1 00:01:30
-Session 1 01:00:45
-Session 2 00:00:20
-Session 2 00:00:20
-Session 2 01:00:20
我希望在合并后输出如下所示的内容
-Name Duration
-Session 1 01:02:30
-Session 2 01:01:30
-Session 1 01:03:00
-Session 2 01:01:00
答案 0 :(得分:0)
此宏将为您提供相同的答案:
根据屏幕截图更改范围。
Sub Macro2()
Dim val As Double: val = 0
For Each cel In ActiveSheet.Range("K5:K16") 'Change the Range to which cells Contains Session Text , Not the Time
If cel.Value = cel.Offset(1, 0).Value Then
val = val + cel.Offset(0, 1).Value
Else
MsgBox cel.Value & " - " & Format(val + cel.Offset(0, 1).Value, "hh:mm:ss")
val = 0
End If
Next
End Sub
答案 1 :(得分:0)
您可以使用索引列+ Power Query
(MS自2010年以来在Excel版本中免费提供的加载项),包含在2016+版本中,称为Get&Transform
。 / p>
=IF(A2=A1,N(C1),N(C1)+1)
然后,在Power Query编辑器中
Duration
Index
列和-Name
列的顺序分组
Sum
作为聚合类型,并为新列命名(例如Total Duration
Index
列。Close and Load
或Load To
来源和结果
M代码
let
Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"-Name", type text}, {"Duration", type duration}, {"Index", Int64.Type}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"Index", "-Name"}, {{"Total Duration", each List.Sum([Duration]), type duration}}),
#"Removed Columns" = Table.RemoveColumns(#"Grouped Rows",{"Index"})
in
#"Removed Columns"
注意: 可以在Power Query中设置“索引”列,但在Excel工作表上进行设置要简单得多。
答案 2 :(得分:0)