Добрый день. Очень нужна ваша помощь. Нужно сгруппировать свод, чтобы можно было нажать на плюс - столбец развернулся - еще плюс - второй столбец развернулся. Пример во вложении. Нужно сгруппировать первый столбец до итогов, и второй столбец до итогов. Примерно так: -Кластер 1 Итог -Кластер 2 Итог Нажимаем на плюс (внутри кластера): -БП итог -Б.П+Макароны Итог -Бум.пр. Итог и т.д. Нажимаем еще на плюс: номера и заводы видно
Как-то так. Помогите написать макрос для этого. По факту строк будет около 150000 (если это важно для макроса) Кол-во столбцов как в примере
Добрый день. Очень нужна ваша помощь. Нужно сгруппировать свод, чтобы можно было нажать на плюс - столбец развернулся - еще плюс - второй столбец развернулся. Пример во вложении. Нужно сгруппировать первый столбец до итогов, и второй столбец до итогов. Примерно так: -Кластер 1 Итог -Кластер 2 Итог Нажимаем на плюс (внутри кластера): -БП итог -Б.П+Макароны Итог -Бум.пр. Итог и т.д. Нажимаем еще на плюс: номера и заводы видно
Как-то так. Помогите написать макрос для этого. По факту строк будет около 150000 (если это важно для макроса) Кол-во столбцов как в примереNikonka89
Включаете запись макроса, делаете группировку, выключаете запись. Получаете для начала что-то типа такого: [vba]
Код
Sub Макрос2() ' ' Макрос2 Макрос '
' Rows("2:76").Rows.Group Rows("78:80").Rows.Group Rows("2:167").Rows.Group End Sub
[/vba] Это я уже чуть причесал, и это работает. Т.е. далее (вернув всё на исходную) нужно пройтись циклом по ячейкам, и подставлять вместо этих номеров строк найденные, ну и продолжать так дальше.
Вот группирует как надо: [vba]
Код
Sub tt() Dim st1&, st2&, i&
st1 = 2 st2 = 2
For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
If InStr(Cells(i, 1), " Итог") Then Rows(st1 & ":" & i - 1).Rows.Group st1 = i + 1 End If
If InStr(Cells(i, 2), " Итог") Then Rows(st2 & ":" & i - 1).Rows.Group st2 = i + 1 If InStr(Cells(i + 1, 1), " Итог") Then st2 = st2 + 1 End If
Next
End Sub
[/vba]
Включаете запись макроса, делаете группировку, выключаете запись. Получаете для начала что-то типа такого: [vba]
Код
Sub Макрос2() ' ' Макрос2 Макрос '
' Rows("2:76").Rows.Group Rows("78:80").Rows.Group Rows("2:167").Rows.Group End Sub
[/vba] Это я уже чуть причесал, и это работает. Т.е. далее (вернув всё на исходную) нужно пройтись циклом по ячейкам, и подставлять вместо этих номеров строк найденные, ну и продолжать так дальше.
Вот группирует как надо: [vba]
Код
Sub tt() Dim st1&, st2&, i&
st1 = 2 st2 = 2
For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
If InStr(Cells(i, 1), " Итог") Then Rows(st1 & ":" & i - 1).Rows.Group st1 = i + 1 End If
If InStr(Cells(i, 2), " Итог") Then Rows(st2 & ":" & i - 1).Rows.Group st2 = i + 1 If InStr(Cells(i + 1, 1), " Итог") Then st2 = st2 + 1 End If