Группирование строк в EXCEL (макрос) / VBA
Формулировка задачи:
Ребят, добрый день!!
Помогите, пожалуйста,написать макрос, чтобы в таблице EXCEL строки автоматом группировались по одинаковым названиям в каждом столбце (их 4). Т.е. сбоку слева появлялся "плюсик" и можно было группу свернуть или развернуть.
В первом столбце названия групп повторяются и группа заканчивается со словом ГРУППА_ИТОГ. Мне нужно сделать по каждому столбцу группировку.
Файл с примером во вложении
Перерыла весь инет, не нашла
Решение задачи: «Группирование строк в EXCEL (макрос) / VBA»
textual
Листинг программы
- Sub PodItogi2()
- ' Многоуровневые итоги
- Dim iLastRow As Long, WkSh As Worksheet
- Set WkSh = Worksheets("Город")
- With WkSh
- .AutoFilterMode = False
- .Cells.RemoveSubtotal
- iLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
- With .Sort
- .SortFields.Clear
- .SortFields.Add Key:=Parent.Range("A6:A" & iLastRow), _
- SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
- .SortFields.Add Key:=Parent.Range("B6:B" & iLastRow), _
- SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
- .SortFields.Add Key:=Parent.Range("C6:C" & iLastRow), _
- SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
- .SortFields.Add Key:=Parent.Range("D6:D" & iLastRow), _
- SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
- .SetRange WkSh.Range("A5:H" & iLastRow)
- .Header = xlYes
- .MatchCase = False
- .Orientation = xlTopToBottom
- .SortMethod = xlPinYin
- .Apply
- End With
- .Range("A5:H" & iLastRow).RemoveSubtotal
- .Range("A5:H" & iLastRow).Subtotal GroupBy:=Array(1, 2, 3, 4), Function:=xlSum, TotalList:=Array(7, 8), _
- Replace:=False, PageBreaks:=False, SummaryBelowData:=False
- .Range("A5:H6").AutoFilter
- End With
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д