Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос VBA для автоматической группировки строк - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос VBA для автоматической группировки строк (Макросы/Sub)
Макрос VBA для автоматической группировки строк
Sl1mka Дата: Пятница, 10.07.2015, 13:17 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день!

Прошу помочь с написанием макроса, который бы работал следующим образом:

0. На листе создается кнопка "Группировка", которая активирует макрос, при нажатии на нее; кнопка "Сгруппировать", которая группирует все существующие связи; "Разгруппировать", которая разгруппирует их, соответственно.

При нажатии на кнопку "Группировка", происходят следующие процессы:
1. Сбрасываются (удаляются) все действующие группировки на листе;
2. Определяется диапазон работы макроса - со строки № 6 листа (включительно), до строки, в столбце В которой значение "Общий итог" (номер строки не определен!!);
3. Группируются строки, в столбце А которых стоит значение "-", разумеется каждый набор последовательно идущих строк, удовлетворяющих условие, группируется отдельно, "не задевая" те строки, которые условие не удовлетворяют.

ПС. Если есть вариант решения задачи не макросом, а иным способом - то будет вообще супер!

Пример прилагаю. Благодарю за уделенное время!
К сообщению приложен файл: 3599466.xlsx (13.5 Kb)
 
Ответить
СообщениеДобрый день!

Прошу помочь с написанием макроса, который бы работал следующим образом:

0. На листе создается кнопка "Группировка", которая активирует макрос, при нажатии на нее; кнопка "Сгруппировать", которая группирует все существующие связи; "Разгруппировать", которая разгруппирует их, соответственно.

При нажатии на кнопку "Группировка", происходят следующие процессы:
1. Сбрасываются (удаляются) все действующие группировки на листе;
2. Определяется диапазон работы макроса - со строки № 6 листа (включительно), до строки, в столбце В которой значение "Общий итог" (номер строки не определен!!);
3. Группируются строки, в столбце А которых стоит значение "-", разумеется каждый набор последовательно идущих строк, удовлетворяющих условие, группируется отдельно, "не задевая" те строки, которые условие не удовлетворяют.

ПС. Если есть вариант решения задачи не макросом, а иным способом - то будет вообще супер!

Пример прилагаю. Благодарю за уделенное время!

Автор - Sl1mka
Дата добавления - 10.07.2015 в 13:17
Samaretz Дата: Пятница, 10.07.2015, 14:13 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 223
Репутация: 63 ±
Замечаний: 0% ±

Excel 2010; 2013; 2016
Ну, как-то так.....
[vba]
Код
Sub GroupRow()
Dim i As Long, TotalRow As Long, CurNumber As Long, CurNumberRow As Long, NextNumber As Long, NextNumberRow As Long
On Error Resume Next
CurNumber = 1
CurNumberRow = 6
TotalRow = Application.WorksheetFunction.Match("Общий итог", Sheet1.Range("B:B"), 0)
Sheet1.Rows("6:" & CStr(TotalRow)).Select
For i = 1 To 9
      Selection.Rows.Ungroup
Next i
Err.Number = 0
Do
      NextNumber = CurNumber + 1
      NextNumberRow = Application.WorksheetFunction.Match(NextNumber, Sheet1.Range("A:A"), 0)
      If Err.Number <> 0 Then NextNumberRow = TotalRow
      Sheet1.Rows(CurNumberRow + 1 & ":" & NextNumberRow - 1).Select
      Selection.Rows.Group
      CurNumber = NextNumber
      CurNumberRow = NextNumberRow
      If CurNumberRow = TotalRow Then Exit Do
Loop
MsgBox "Rows regrouping process is complete", vbInformation, "Rows have been regrouped successfully"
End Sub
[/vba]
К сообщению приложен файл: 3599466.xlsm (23.4 Kb)


Сообщение отредактировал Samaretz - Пятница, 10.07.2015, 14:19
 
Ответить
СообщениеНу, как-то так.....
[vba]
Код
Sub GroupRow()
Dim i As Long, TotalRow As Long, CurNumber As Long, CurNumberRow As Long, NextNumber As Long, NextNumberRow As Long
On Error Resume Next
CurNumber = 1
CurNumberRow = 6
TotalRow = Application.WorksheetFunction.Match("Общий итог", Sheet1.Range("B:B"), 0)
Sheet1.Rows("6:" & CStr(TotalRow)).Select
For i = 1 To 9
      Selection.Rows.Ungroup
Next i
Err.Number = 0
Do
      NextNumber = CurNumber + 1
      NextNumberRow = Application.WorksheetFunction.Match(NextNumber, Sheet1.Range("A:A"), 0)
      If Err.Number <> 0 Then NextNumberRow = TotalRow
      Sheet1.Rows(CurNumberRow + 1 & ":" & NextNumberRow - 1).Select
      Selection.Rows.Group
      CurNumber = NextNumber
      CurNumberRow = NextNumberRow
      If CurNumberRow = TotalRow Then Exit Do
Loop
MsgBox "Rows regrouping process is complete", vbInformation, "Rows have been regrouped successfully"
End Sub
[/vba]

Автор - Samaretz
Дата добавления - 10.07.2015 в 14:13
Sl1mka Дата: Пятница, 10.07.2015, 14:57 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
В примере работает именно так, как хотелось! А не подскажите еще, как его закинуть в оригинальную таблицу? Что-то не получается...
 
Ответить
СообщениеВ примере работает именно так, как хотелось! А не подскажите еще, как его закинуть в оригинальную таблицу? Что-то не получается...

Автор - Sl1mka
Дата добавления - 10.07.2015 в 14:57
Sl1mka Дата: Пятница, 10.07.2015, 15:06 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Все получилось! Спасибо огромное!
 
Ответить
СообщениеВсе получилось! Спасибо огромное!

Автор - Sl1mka
Дата добавления - 10.07.2015 в 15:06
Ярик Дата: Воскресенье, 16.06.2019, 19:07 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 130
Репутация: 1 ±
Замечаний: 0% ±

Excel 2007
Samaretz, спасибо Вам за макрос подскажите почему макрос не работает с формулами?
только если скопировать и вставить формулы как значения


753123
 
Ответить
СообщениеSamaretz, спасибо Вам за макрос подскажите почему макрос не работает с формулами?
только если скопировать и вставить формулы как значения

Автор - Ярик
Дата добавления - 16.06.2019 в 19:07
Pelena Дата: Воскресенье, 16.06.2019, 19:46 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19167
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Какие формулы? В каком столбце? На примере покажите


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеКакие формулы? В каком столбце? На примере покажите

Автор - Pelena
Дата добавления - 16.06.2019 в 19:46
Ярик Дата: Понедельник, 17.06.2019, 10:11 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 130
Репутация: 1 ±
Замечаний: 0% ±

Excel 2007
Pelena, спасибо за ответ я уже разобрался


753123
 
Ответить
СообщениеPelena, спасибо за ответ я уже разобрался

Автор - Ярик
Дата добавления - 17.06.2019 в 10:11
Extybr Дата: Воскресенье, 28.06.2020, 11:21 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 120
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
вопрос знатокам....а как сделать чтобы если ставить разные отметки и автоматом строки добавлялись в группировку
 
Ответить
Сообщениевопрос знатокам....а как сделать чтобы если ставить разные отметки и автоматом строки добавлялись в группировку

Автор - Extybr
Дата добавления - 28.06.2020 в 11:21
Pelena Дата: Воскресенье, 28.06.2020, 11:31 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 19167
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Extybr, создайте свою тему


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеExtybr, создайте свою тему

Автор - Pelena
Дата добавления - 28.06.2020 в 11:31
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос VBA для автоматической группировки строк (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!