Я роблю це весь час з vba. Я впевнений, що з офісу 95 'я використовував той самий метод, з незначними змінами, які були внесені для розміщення стовпців. Це можна зробити за допомогою меншої кількості рядків, якщо ви не визначите змінні. Це можна зробити швидше, якщо у вас є багато ліній для проходження чи більше речей, з якими вам потрібно визначити свою групу.
Я зіткнувся з ситуаціями, коли "група" базується на 2-5 клітинках. Цей приклад розглядає лише один стовпчик, але його можна легко розширити, якщо хтось потребує часу, щоб пограти з ним.
Це передбачає 3 стовпці, і вам доведеться сортувати за стовпцем group_values. Перш ніж запустити макрос, виберіть першу клітинку, яку потрібно порівняти, у стовпці group_values.
'group_values, some_number, empty_columnToHoldSubtotals
'(тут йдеться про речі)
'cookie 1 порожній
'cookie 3 порожній
'торт 4 порожній
'капелюх 0 порожній
'капелюх 3 порожній
'...
'Стоп
Sub subtotal ()
'Визначте два рядки та підсумковий лічильник
Затемніть це одне, це одне як рядок
Dim subCount As Double
'Насіння цінностей
thisOne = ActiveCell.Value
thatOne = ActiveCell.Offset (1, 0)
subCount = 0
'встановіть цикл, який триватиме до тих пір, поки не досягне значення зупинки
Хоча (ActiveCell.Value <> "зупинка")
'порівнює значення комірки з коміркою під нею.
Якщо (thisOne = thatOne) Тоді
'якщо комірки рівні, кількість ліній додається до підрахунку
subCount = subCount + ActiveCell.Offset (0, 1) .Value
Інше
'якщо комірки не рівні, записується підрахунок, а підсумковий скидається.
ActiveCell.Offset (0, 2) .Value = ActiveCell.Offset (0, 1) .Value + subCount
subCount = 0
Кінець Якщо
'вибрати наступну клітинку вниз
ActiveCell.Offset (1, 0) .Виберіть
'присвоїти значенням активної комірки та тієї, що знаходиться під нею, змінним
thisOne = ActiveCell.Value
thatOne = ActiveCell.Offset (1, 0)
Венд
Кінець Під