Robię to cały czas z vba. Jestem całkiem pewna, że używam tej samej metody od czasów biura 95’, z niewielkimi zmianami wprowadzonymi przy umieszczaniu kolumn. Można to zrobić z mniejszą liczbą linii, jeśli nie zdefiniuje się zmiennych. Można to zrobić szybciej, jeśli masz dużo linii do przejścia lub więcej rzeczy, które musisz zdefiniować swoją grupę z.
Mam do czynienia z sytuacjami, w których ‘grupa’ jest oparta na 2-5 komórkach. Ten przykład patrzy tylko na jedną kolumnę, ale może być łatwo rozszerzony, jeśli ktoś potrzebuje czasu, aby z nią zagrać.
Zakłada 3 kolumny, i musisz posortować według kolumny wartości grupowych. Zanim uruchomisz makro, wybierz pierwszą komórkę, którą chcesz porównać w kolumnie 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