Как сгруппировать строки Excel на нескольких уровнях с помощью макроса Excel

#vba #excel

#vba #excel

Вопрос:

У меня проблема с группировкой строк Excel на основе данных строк. Ниже приведены примеры данных. Примеры данных для группировки строк

Я хочу сгруппировать данные на основе ресурса, Metro и Geo. Данные после группировки

Я начал писать приведенный ниже макрос, но мне нужна некоторая помощь в выполнении этого.

 Public Sub GroupCells()
    Dim myRange As Range
    Dim GeoRange As Range
    Dim MetroRange As Range
    Dim ResourceRange As Range
    Dim GeosRange As Range
    Dim MetrosRange As Range
    Dim unionRange As Range


    Set myRange = Range("Resource")
    Set GeoRange = Range("Geo")
    Set MetroRange = Range("Metro")
    rowCount = Cells(Rows.Count, myRange.Column).End(xlUp).Row

    Set TypesRange = myRange.SpecialCells(xlTextValues)
    Set GeosRange = GeoRange.SpecialCells(xlTextValues)
    Set MetrosRange = MetroRange.SpecialCells(xlTextValues)
    Set unionRange = Union(TypesRange, GeosRange, MetrosRange)
    For Each grp In unionRange
    grp.Rows.Group
    Next

    End Sub
  

Комментарии:

1. (Краткое примечание — на каком листе вы хотите получить количество строк? В настоящее время он собирается использовать количество строк независимо от ActiveSheet того, что есть. Чтобы указать, добавьте имя листа перед Cells() и Rows.Count , как вы делали для specialCells )

2. Почему бы не использовать функцию промежуточного итога по старым данным?

3. результатом записи макроса является: ActiveSheet. Используется диапазон. Промежуточный итог GroupBy:=1, функция:=xlSum, итоговый список:=Array(3), _ Replace:=True, разрывы страниц:=False, SummaryBelowData:=True ActiveSheet. Используется диапазон. Промежуточный итог GroupBy:=2, функция:=xlSum, итоговый список:=Array(3), _ Replace:=False, разрывы страниц:=False, SummaryBelowData:=True