Ich mache das ständig mit vba. Ich bin mir ziemlich sicher, dass ich seit Office 95’ die gleiche Methode verwendet habe, mit geringfügigen Änderungen bei der Spaltenplatzierung. Es kann mit weniger Zeilen gemacht werden, wenn Sie die Variablen nicht definieren. Es geht auch 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, aber sie kann leicht erweitert werden, wenn sich jemand die Zeit nimmt, damit zu spielen.
Dies setzt 3 Spalten voraus, und Sie müssen nach der Spalte group_values sortieren. Bevor Sie das Makro ausführen, wählen Sie in der Spalte group_values die erste Zelle aus, die Sie vergleichen möchten.
'group\_values, some\_number, empty\_columnToHoldSubtotals '(stuff goes here) 'cookie 1 empty 'cookie 3 empty 'cake 4 empty 'hat 0 empty 'hat 3 empty '... 'stop
Sub subtotal() ' define two strings and a subtotal counter thingy Dim thisOne, thatOne As String Dim subCount As Double ' seed the values thisOne = ActiveCell.Value thatOne = ActiveCell.Offset(1, 0) subCount = 0 ' setup a loop that will go until it reaches a stop value While (ActiveCell.Value <> "stop") ' compares a cell value to the cell beneath it. If (thisOne = thatOne) Then ' if the cells are equal, the line count is added to the subcount subCount = subCount + ActiveCell.Offset(0, 1).Value Else ' if the cells are not equal, the subcount is written, and subtotal reset. ActiveCell.Offset(0, 2).Value = ActiveCell.Offset(0, 1).Value + subCount subCount = 0 End If ' select the next cell down ActiveCell.Offset(1, 0).Select ' assign the values of the active cell and the one below it to the variables thisOne = ActiveCell.Value thatOne = ActiveCell.Offset(1, 0) Wend End Sub