我是VBA的新手,我被困了...... 我有一张工人桌和他们工作的时间。我想将所有工作人员插入到一个数组中,并将他们一直工作的总时间打印出来,然后将它们打印到另一张工作表中。
问题在于我不知道是否可以将这些值一起插入到数组中。现在我已将名称硬编码到我的代码中并使用If语句来为正确的名称添加小时但如果我向表中添加更多的工作人员将是一个问题(因为那时我也需要将这些名称添加到代码中)。我不希望代码在运行之前知道名称或工人数量。
我希望打印输出如下:
Steve | 13
Emma | 2
Andy | 3
Jeff | 12
感谢任何帮助!
答案 0 :(得分:2)
使用这个或类似的东西:
Sub test()
Dim Dic As Object, oCell As Range, i&, y%, key As Variant
Set Dic = CreateObject("Scripting.Dictionary")
y = 1: i = Cells(Rows.Count, "A").End(xlUp).Row
For Each oCell In Range("A2:A" & i)
If Not Dic.exists(oCell.Value) Then
Dic.Add oCell.Value, WorksheetFunction.SumIf(Range("A2:A" & i), oCell.Value, Range("B2:B" & i))
End If
Next
For Each key In Dic
Debug.Print key, Dic(key)
Next
End Sub
这里是截图
答案 1 :(得分:1)
非常简单的方法:
Function GetTable(r As Range) As Variant
GetTable = r.Value
End Function
Sub main()
Dim Table As Variant
Table = GetTable(ActiveSheet.Range("A2:B6")) 'Supply the range of your workers.
For i = 1 To UBound(Table, 1)
Sum = Sum + Table(i, 2)
Next
MsgBox (Sum)
End Sub
输出:
答案 2 :(得分:0)
只需使用数据透视表,并在必要时单击工作表时自动刷新数据透视表。