Добрый день.
Лист Excel.
С помощью команды "Данные"-"Группа и структура"-"Группировать", строки сгруппированы в несколько вложенных уровней. То есть, ячейка в каждом столбце может принадлежать разным уровням группировки. Подскажите, пожалуйста, какая структура (какое свойство) отвечает за принадлежность к уровню группировки. Требуется производить различные действия над данными в ячейке, в зависимости от уровня.
Как в Excel определить уровень группировки
Модератор: Naeel Maqsudov
Типа такое
ActiveSheet.Rows(ActiveCell.Row).OutlineLevel
Бегемот, если сам давно это нашёл, то на форумах принято и своё решение сообщать.
ActiveSheet.Rows(ActiveCell.Row).OutlineLevel
Бегемот, если сам давно это нашёл, то на форумах принято и своё решение сообщать.
А как узнать максимальный уровень группировки без перебора строк?
- mc-black
- Сообщения: 250
- Зарегистрирован: 08 май 2008, 16:09
- Откуда: Россия, Нижний Новгород
- Контактная информация:
Смотрите справку по Outline Object. А вообще, что, строк слишком много? Можно проверить строки и столбцы на всем листе довольно-таки быстро.
На заказ: VBA, Excel mc-black@yandex.ru
Строк более 3 тыс. Проход по строкам занимает 1-2 минуты. Справку смотрел, но такой функции не нашел, поэтому и обратился за помощью на форум.
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
Получить максимальный уровень группировки можно сняв её:
Файл можно предварительно сохранить 
Как вариант:
Определите имя MyLEVEL как =ПОЛУЧИТЬ.ЯЧЕЙКУ(28;A1)
(Это функция EXCEL4. Непосредственно использовать её на листе нельзя.)
Затем, поместите используя протяжку значений в ячейки некоего столбца формулу
=MyLEVEL
После этого максимальный уровень группирования получается с помощью функции листа
МАКС, применённой к этому столбцу
Код: Выделить всё
Dim i As Integer
i = 1
Application.ScreenUpdating = False
On Error resume next
Do
Rows.Ungroup
if err.number <> 0 then exit do
i = i + 1
Loop
Application.ScreenUpdating = True
MsgBox "MaxOtlinelevel: " & str(i)

Как вариант:
Определите имя MyLEVEL как =ПОЛУЧИТЬ.ЯЧЕЙКУ(28;A1)
(Это функция EXCEL4. Непосредственно использовать её на листе нельзя.)
Затем, поместите используя протяжку значений в ячейки некоего столбца формулу
=MyLEVEL
После этого максимальный уровень группирования получается с помощью функции листа
МАКС, применённой к этому столбцу
Андрей Энтелис,
aentelis.livejournal.com
aentelis.livejournal.com