Группирование строк в EXCEL (макрос) / VBA

Узнай цену своей работы

Формулировка задачи:

Ребят, добрый день!! Помогите, пожалуйста,написать макрос, чтобы в таблице EXCEL строки автоматом группировались по одинаковым названиям в каждом столбце (их 4). Т.е. сбоку слева появлялся "плюсик" и можно было группу свернуть или развернуть. В первом столбце названия групп повторяются и группа заканчивается со словом ГРУППА_ИТОГ. Мне нужно сделать по каждому столбцу группировку. Файл с примером во вложении Перерыла весь инет, не нашла

Решение задачи: «Группирование строк в EXCEL (макрос) / VBA»

textual
Листинг программы
  1. Sub PodItogi2()
  2.   ' Многоуровневые итоги
  3.  Dim iLastRow As Long, WkSh As Worksheet
  4.   Set WkSh = Worksheets("Город")
  5.   With WkSh
  6.    .AutoFilterMode = False
  7.    .Cells.RemoveSubtotal
  8.    iLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
  9.    With .Sort
  10.         .SortFields.Clear
  11.         .SortFields.Add Key:=Parent.Range("A6:A" & iLastRow), _
  12.             SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
  13.         .SortFields.Add Key:=Parent.Range("B6:B" & iLastRow), _
  14.             SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
  15.         .SortFields.Add Key:=Parent.Range("C6:C" & iLastRow), _
  16.             SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
  17.         .SortFields.Add Key:=Parent.Range("D6:D" & iLastRow), _
  18.             SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
  19.         .SetRange WkSh.Range("A5:H" & iLastRow)
  20.         .Header = xlYes
  21.         .MatchCase = False
  22.         .Orientation = xlTopToBottom
  23.         .SortMethod = xlPinYin
  24.         .Apply
  25.     End With
  26.     .Range("A5:H" & iLastRow).RemoveSubtotal
  27.     .Range("A5:H" & iLastRow).Subtotal GroupBy:=Array(1, 2, 3, 4), Function:=xlSum, TotalList:=Array(7, 8), _
  28.     Replace:=False, PageBreaks:=False, SummaryBelowData:=False
  29.     .Range("A5:H6").AutoFilter
  30.   End With
  31. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут