752 Aufrufe
Gefragt in Tabellenkalkulation von ahorn38 Experte (3.2k Punkte)
Hallo,

ich versuche mich an einem Code, der Teilsummen in einem Array "zwischenlagert" und am Ende anzeigt.
Einfaches Beispiel:
Artikel Sorte Menge
Art1 Sort1 1
Art2 Sort2 1
Art3 Sort1 1
Art4 Sort4 1
Art5 Sort2 1
Art6 Sort2 1
Art7 Sort7 1
Art8 Sort8 1
Art9 Sort9 1
Art10 Sort10 1

Der Code soll zeilenweise vorgehen und in einem zweidimensionalen Array die Sorte und die Menge ablegen. Wenn die Sorte mehrfach vorkommt, sollen die entsprechenden Mengen im Array addiert werden.
Die Sorten 1 und 2 kommen im Bsp. mehrfach vor.
Array-Ergebnis:
Sort 1 2
Sort2 3
Sort4 1 ......
Danke für jeden Tipp.
Gruß Andreas

2 Antworten

0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Andreas,

Sub Summieren()
Dim arrWerte()
Dim arrAusgang()
Dim lngZeile As Long
Dim lngZaehler As Long
ReDim arrWerte(0 To 1, 0)
ReDim arrAusgang(0)
For lngZeile = 1 To 10
If IsError(Application.Match(Cells(lngZeile, 2), arrAusgang(), 0)) Then
ReDim Preserve arrAusgang(0 To lngZaehler)
arrAusgang(lngZaehler) = Cells(lngZeile, 2)
ReDim Preserve arrWerte(0 To 1, 0 To lngZaehler)
arrWerte(0, lngZaehler) = Cells(lngZeile, 2)
arrWerte(1, lngZaehler) = Application.SumIf(Range("B1:B10"), Cells(lngZeile, 2), Range("C1:C10"))
lngZaehler = lngZaehler + 1
End If
Next lngZeile
End Sub


Bis später,
Karin
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo Karin,

klappt prima. Mit
Range("D1").Resize(UBound(arrWerte(), 2) + 1, 2) = Application.Transpose(arrWerte())
kriege ich genau die Liste, die ich haben will. Vielen Dank!!
Gruß
Andreas
...