Ich mache das die ganze Zeit mit vba. Ich bin mir ziemlich sicher, dass ich seit Office 95 dieselbe Methode verwendet habe, mit geringfügigen Änderungen für die Spaltenplatzierung. Dies kann mit weniger Zeilen geschehen, wenn Sie die Variablen nicht definieren. Das geht schneller, wenn Sie viele Zeilen durchgehen müssen oder mehr Dinge, mit denen Sie Ihre Gruppe definieren müssen.
Ich bin auf Situationen gestoßen, in denen eine 'Gruppe' auf 2-5 Zellen basiert. In diesem Beispiel wird nur eine Spalte betrachtet, es kann jedoch problemlos erweitert werden, wenn sich jemand die Zeit nimmt, damit zu spielen.
Dies setzt 3 Spalten voraus und Sie müssen nach der group_values-Spalte sortieren. Wählen Sie in der Spalte group_values die erste Zelle aus, die Sie vergleichen möchten, bevor Sie den Makro ausführen.
'group_values, some_number, empty_columnToHoldSubtotals
'(Zeug geht hier)
'cookie 1 leer
Cookie 3 ist leer
Kuchen 4 leer
'hat 0 leer
Hut 3 leer
'...
'halt
Zwischensumme ()
'definiere zwei Zeichenketten und ein Zwischensummen-Zähler-Ding
Dim thisOne, thatOne As String
SubCount als Double dimmen
'säen die Werte
thisOne = ActiveCell.Value
thatOne = ActiveCell.Offset (1, 0)
subCount = 0
'stelle eine Schleife auf, die bis zum Erreichen eines Stoppwertes läuft
While (ActiveCell.Value <> "stop")
'vergleicht einen Zellenwert mit der Zelle darunter.
If (thisOne = thatOne) Then
'Wenn die Zellen gleich sind, wird die Zeilenanzahl zur Unteranzahl hinzugefügt
subCount = subCount + ActiveCell.Offset (0, 1) .Value
Sonst
'Wenn die Zellen nicht gleich sind, wird der Unterzähler geschrieben und die Zwischensumme zurückgesetzt.
ActiveCell.Offset (0, 2) .Value = ActiveCell.Offset (0, 1) .Value + subCount
subCount = 0
End If
'wähle die nächste Zelle aus
ActiveCell.Offset (1, 0) .Wählen Sie
'Ordnen Sie den Variablen die Werte der aktiven und der darunter liegenden Zelle zu
thisOne = ActiveCell.Value
thatOne = ActiveCell.Offset (1, 0)
Wend
End Sub