Robię to cały czas za pomocą VBA. Jestem prawie pewien, że zastosowałem tę samą metodę od pakietu Office 95 ', z niewielkimi zmianami dotyczącymi umieszczania kolumn. Można to zrobić z mniejszą liczbą wierszy, jeśli nie zdefiniujesz zmiennych. Można to zrobić szybciej, jeśli masz wiele linii do przejścia lub więcej rzeczy, za pomocą których musisz zdefiniować grupę.
Natrafiłem na sytuacje, w których „grupa” opiera się na 2-5 komórkach. Ten przykład dotyczy tylko jednej kolumny, ale można ją łatwo rozszerzyć, jeśli ktoś poświęci czas na zabawę.
Zakłada to 3 kolumny i musisz sortować według kolumny group_values. Przed uruchomieniem makra wybierz pierwszą komórkę, którą chcesz porównać, w kolumnie wartości_grupy.
'group_values, some_number, empty_columnToHoldSubtotals
„(rzeczy idą tutaj)
„plik cookie 1 pusty
„ciasteczko 3 puste
„ciasto 4 puste
„kapelusz 0 pusty
„kapelusz 3 pusty
„...
'zatrzymać
Suma częściowa ()
'zdefiniuj dwa ciągi i sumę częściową
Dim thisOne, thatOne As String
Dim subCount As Double
„seeduj wartości
thisOne = ActiveCell.Value
thatOne = ActiveCell.Offset (1, 0)
subCount = 0
'skonfiguruj pętlę, która będzie działać, aż osiągnie wartość stop
Podczas gdy (ActiveCell.Value <> „stop”)
porównuje wartość komórki z komórką pod nią.
Jeśli (thisOne = thatOne) To
„jeśli komórki są równe, liczba wierszy jest dodawana do subkwota
subCount = subCount + ActiveCell.Offset (0, 1) .Wartość
Jeszcze
„jeśli komórki nie są równe, subkonto jest zapisywane, a suma częściowa resetowana.
ActiveCell.Offset (0, 2) .Value = ActiveCell.Offset (0, 1) .Value + subCount
subCount = 0
End If
„wybierz następną komórkę w dół
ActiveCell.Offset (1, 0). Wybierz
'przypisz wartości aktywnej komórki i tej pod nią do zmiennych
thisOne = ActiveCell.Value
thatOne = ActiveCell.Offset (1, 0)
Wend
Napis końcowy