Я делаю это все время с VBA. Я почти уверен, что использовал тот же метод, начиная с Office 95 ', с небольшими изменениями, внесенными для размещения столбцов. Это может быть сделано с меньшим количеством строк, если вы не определяете переменные. Это может быть сделано быстрее, если у вас есть много строк для прохождения или больше вещей, с которыми вам нужно определить свою группу.
Я сталкивался с ситуациями, когда «группа» основана на 2-5 ячейках. Этот пример рассматривает только один столбец, но его можно легко развернуть, если кто-то найдет время поиграть с ним.
Это предполагает 3 столбца, и вы должны сортировать по столбцу group_values. Перед запуском макроса выберите первую ячейку, которую вы хотите сравнить, в столбце group_values.
'group_values, some_number, empty_columnToHoldSubtotals
'(материал идет сюда)
'cookie 1 пусто
печенье 3 пусто
Торт 4 пустой
'шляпа 0 пусто
шляпа 3 пусто
»...
'стоп
Подытог ()
'определить две строки и промежуточный счетчик
Dim thisOne, thatOne As String
Dim subCount As Double
посеять ценности
thisOne = ActiveCell.Value
thatOne = ActiveCell.Offset (1, 0)
subCount = 0
'настроить цикл, который будет идти, пока не достигнет значения остановки
Пока (ActiveCell.Value <> «стоп»)
'сравнивает значение ячейки с ячейкой под ней.
Если (thisOne = thatOne) Тогда
'если ячейки равны, счетчик строк добавляется к субсчету
subCount = subCount + ActiveCell.Offset (0, 1). Значение
еще
'если ячейки не равны, подсчет записывается, и промежуточный итог сбрасывается.
ActiveCell.Offset (0, 2) .Value = ActiveCell.Offset (0, 1) .Value + subCount
subCount = 0
End If
выберите следующую ячейку вниз
ActiveCell.Offset (1, 0). Выбрать
'присваивать переменным значения активной ячейки и ячейки под ней
thisOne = ActiveCell.Value
thatOne = ActiveCell.Offset (1, 0)
венед
End Sub