Ik doe dit de hele tijd met vba. Ik ben er vrij zeker van dat ik dezelfde methode heb gebruikt sinds kantoor 95’, met kleine wijzigingen voor de plaatsing van de kolommen. Het kan met minder regels als je de variabelen niet definieert. Het kan sneller als je veel regels hebt om door te gaan of meer dingen waarmee je je groep moet definiëren.
Ik ben in situaties terechtgekomen waar een ‘groep’ gebaseerd is op 2-5 cellen. Dit voorbeeld kijkt maar naar één kolom, maar het kan gemakkelijk worden uitgebreid als iemand de tijd neemt om ermee te spelen.
Dit gaat uit van 3 kolommen, en je moet sorteren op de kolom ‘waarde’ van de groep. Voordat je de macro uitvoert, selecteer je de eerste cel in de groep die je wilt vergelijken.
'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