AW: Scripting.Dictionary
11.10.2020 13:14:22
Nepumuk
Hallo Helmut,
in Dictionary wird der Index der Daten im Array gespeichert:
Option Explicit
Public Sub Summe()
Dim avntValues As Variant, avntSumm() As Variant
Dim ialngIndex As Variant, ialngRow As Long, ialngTemp As Long
Dim objDicitionary As Object
Set objDicitionary = CreateObject(Class:="Scripting.Dictionary")
With Worksheets("Tabelle1")
avntValues = .Range(.Cells(2, 1), .Cells(.Rows.Count, 9).End(xlUp)).Value
End With
With objDicitionary
For ialngRow = LBound(avntValues, 1) To UBound(avntValues, 1)
If Not .Exists(Key:=avntValues(ialngRow, 1)) Then
Call .Add(Key:=avntValues(ialngRow, 1), Item:=ialngIndex)
Redim Preserve avntSumm(4, ialngIndex)
avntSumm(0, ialngIndex) = avntValues(ialngRow, 1)
avntSumm(1, ialngIndex) = avntSumm(1, ialngIndex) + avntValues(ialngRow, 4)
avntSumm(2, ialngIndex) = avntSumm(2, ialngIndex) + avntValues(ialngRow, 6)
avntSumm(3, ialngIndex) = avntSumm(3, ialngIndex) + avntValues(ialngRow, 8)
avntSumm(4, ialngIndex) = avntSumm(4, ialngIndex) + avntValues(ialngRow, 9)
ialngIndex = ialngIndex + 1
Else
ialngTemp = .Item(Key:=avntValues(ialngRow, 1))
avntSumm(1, ialngTemp) = avntSumm(1, ialngTemp) + avntValues(ialngRow, 4)
avntSumm(2, ialngTemp) = avntSumm(2, ialngTemp) + avntValues(ialngRow, 6)
avntSumm(3, ialngTemp) = avntSumm(3, ialngTemp) + avntValues(ialngRow, 8)
avntSumm(4, ialngTemp) = avntSumm(4, ialngTemp) + avntValues(ialngRow, 9)
End If
Next
End With
Set objDicitionary = Nothing
With Worksheets("Tabelle1")
.Cells(2, 12).Resize(ialngIndex, 5) = Application.Transpose(avntSumm)
End With
End Sub
Gruß
Nepumuk