Lo faccio sempre con la vba. Sono abbastanza sicuro di aver usato lo stesso metodo fin dall'ufficio 95’, con piccole modifiche per il posizionamento delle colonne. Si può fare con meno righe se non si definiscono le variabili. Si può fare più velocemente se si hanno molte linee da percorrere o più cose da definire con il gruppo.
Ho incontrato situazioni in cui un ‘gruppo’ è basato su 2-5 celle. Questo esempio guarda solo ad una colonna, ma può essere espanso facilmente se qualcuno si prende il tempo di giocarci.
Questo presuppone 3 colonne, e si deve ordinare per la colonna dei valori del gruppo. Prima di eseguire la macro, selezionare la prima cella che si desidera confrontare nella colonna group_values.
'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