Я делаю это все время с VBA. Я уверен, что использовал тот же метод с office 95', с небольшими изменениями, внесенными для размещения столбцов. Это можно сделать с меньшим количеством строк, Если вы не определяете переменные. Это можно сделать быстрее, если у вас есть много линий, чтобы пройти или больше вещей, которые вам нужно определить свою группу.
я столкнулся с ситуациями, когда "группа" основана на 2-5 ячейках. В этом примере рассматривается только один столбец, но его можно легко развернуть, если кто-либо нужно время, чтобы поиграть с ним.
это предполагает 3 столбца, и вы должны отсортировать по столбцу group_values.
Перед запуском макроса выберите первую ячейку для сравнения в столбце 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