Как в Excel определить уровень группировки

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
behemoth
Сообщения: 2
Зарегистрирован: 26 окт 2007, 11:32

Добрый день.

Лист Excel.
С помощью команды "Данные"-"Группа и структура"-"Группировать", строки сгруппированы в несколько вложенных уровней. То есть, ячейка в каждом столбце может принадлежать разным уровням группировки. Подскажите, пожалуйста, какая структура (какое свойство) отвечает за принадлежность к уровню группировки. Требуется производить различные действия над данными в ячейке, в зависимости от уровня.
tolikt
Сообщения: 93
Зарегистрирован: 29 окт 2005, 12:33
Откуда: NewVasюbirsk

Типа такое
ActiveSheet.Rows(ActiveCell.Row).OutlineLevel

Бегемот, если сам давно это нашёл, то на форумах принято и своё решение сообщать.
ljuter
Сообщения: 2
Зарегистрирован: 05 июл 2009, 23:50

А как узнать максимальный уровень группировки без перебора строк?
Аватара пользователя
mc-black
Сообщения: 250
Зарегистрирован: 08 май 2008, 16:09
Откуда: Россия, Нижний Новгород
Контактная информация:

Смотрите справку по Outline Object. А вообще, что, строк слишком много? Можно проверить строки и столбцы на всем листе довольно-таки быстро.
На заказ: VBA, Excel mc-black@yandex.ru
ljuter
Сообщения: 2
Зарегистрирован: 05 июл 2009, 23:50

Строк более 3 тыс. Проход по строкам занимает 1-2 минуты. Справку смотрел, но такой функции не нашел, поэтому и обратился за помощью на форум.
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

Получить максимальный уровень группировки можно сняв её:

Код: Выделить всё

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
Ответить