Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
29.03.2024, 01:28:54

Войти
Название темы должно отражать её содержание.
Темы типа "ПОМОГИТЕ!!!", "Срочно!", "Не получается сделать", "Нужна помощь" и т.п. будут удаляться без объяснения причин
33 233 Сообщений в 5 454 Тем от 6 750 Пользователей
Последний пользователь: Alex1210
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Два вопроса-уточнения по группировке строк
Страниц: [1]   Вниз
Печать
Автор Тема: Два вопроса-уточнения по группировке строк  (Прочитано 2535 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Muskin2029
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 28


Просмотр профиля
« : 30.07.2020, 21:16:07 »

Всем привет.
На Рис.1 показан фрагмент Листа:

На Рис.2 этот же фрагмент с развернутой вручную последней группой.
Столбцы 3 и 4 - результат следующего кода:
Код: (vb)
For i = 2 To 14
    Cells(i, 3).Value = Rows(i).OutlineLevel
    Cells(i, 4).Value = Rows(i).EntireRow.Hidden
Next
Мне нужно получить строки, где начинается и заканчивается группа и признак скрытости групп.
1. Правильно я понимаю, что начало и конец группы определяется переходом свойства OutlineLevel с 1 на 2 (начало) и переходом обратно на 1 (конец)? Есть ли другие способы?
2. Правильно я понимаю, что скрытность/отображение групп определяется свойством EntireRow.Hidden?
Заранее спасибо.
Записан

Win10x64, MSO 2016
boa
Старожил
****

Репутация: +22/-0
Офлайн Офлайн

Сообщений: 252


Доброта спасет мир...


Просмотр профиля WWW
« Ответ #1 : 31.07.2020, 01:07:30 »

Здравствуйте,
OutlineLevel и есть определение уровня группировки. Например функции листа:
Код: (vb)
Public Function GroupLevelRow():    GroupLevelRow = Application.Caller.Rows.OutlineLevel:       End Function 'возвращает уровень группировки для строки
Public Function GroupLevelColumn(): GroupLevelColumn = Application.Caller.Columns.OutlineLevel: End Function 'возвращает уровень группировки для столбца

свойство EntireRow.Hidde - имеется у всех строк. и не зависит от группировки, а только от того скрыта строка или нет.
а вот собрать/разложить группировку можно командой
Код: (vb)
.Outline.ShowLevels RowLevels:=1 '  2 или 3..., как надо...
Записан

Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Muskin2029
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 28


Просмотр профиля
« Ответ #2 : 31.07.2020, 10:20:28 »

Спасибо, значит всё делаю правильно.
И ещё последний вопросик - а чем отличается .EntireRow.Hidden от просто .Hidden?
Записан

Win10x64, MSO 2016
vikttur
Глобальный модератор
Ветеран
*****

Репутация: +124/-0
Офлайн Офлайн

Сообщений: 1 816



Просмотр профиля
« Ответ #3 : 31.07.2020, 14:36:57 »

Если обращаться к строке напрямую, то достаточно указать:
Строка.Скрыть? да/нет,
если для диапазона:
диапазон(или ячейка).Вся_строка.Скрыть? да/нет
Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru