Страницы: 1
RSS
Как узнать номер сгруппированных столбцов
 
Доброго дня.
Подскажите пожалуйста,  как узнать номер сгруппированных столбцов.  
Есть несколько групп сгруппированных столбцов,  в одной группе 3 столбца, в другой 5.
Надо, макросом раскрыть группу из 3 столбцов, а группу из 5 столбцов свернуть.  Все на одном уровне.
Спасибо.
 
Код
Sub ShowHideCols()
  Dim c3&, c5&, c&, cg&
  c = 1
  Do
    If Columns(c).OutlineLevel = 2 Then
      cg = cg + 1
    Else
      If cg > 0 Then
        If cg = 3 Then c3 = c - cg
        If cg = 5 Then c5 = c - cg
      End If
      cg = 0
    End If
    c = c + 1
  Loop Until c3 > 0 And c5 > 0
  If c3 > 0 Then Columns(c3).Resize(, 3).Hidden = False
  If c5 > 0 Then Columns(c5).Resize(, 5).Hidden = True
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко,
Спасибо за подсказку, но групп  где будут по 3 или 5 столбцов может быть несколько, как их тогда идентифицировать?  я думал может есть номер группы или по имени как-то обратиться и применить метод или присвоить свойству значение.
 
Извините, модифицируйте как хотите, до тех пор пока не начнет работать как Вам нужно
Цитата
slavakvs написал:
думал может есть номер группы
к сожелению я не читаю мысли, а читаю то, что написано в сообщении
Цитата
slavakvs написал:
Надо, макросом раскрыть группу из 3 столбцов, а группу из 5 столбцов свернуть.
макрос раскрыл группу из 3-х столбцов и скрыл из 5?
все, что написано в сообщении нашло свое отражение в макросе, а все, о чем Вы в это время думали - осталось Вашими мыслями
Изменено: Ігор Гончаренко - 09.08.2018 15:07:22
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
все, что написано в сообщении нашло свое отражение в макросе, а все, о чем Вы в это время думали - осталось Вашими мыслями
согласен, но не все и всегда зависит от нас. по ходу возникли форс-мажорные обстоятельства, не зависящие от меня. Excel и  VBS не моя специализация, но возникла такая потребность.
Ладно, спасибо и на том
 
переделать #2  в нужный Вам макрос - нечего делать. нужно только понимать когда закончить просматривать колонки на предмет наличия группировки, потому что всего их на листе более 16 тыс.шт.
но, никто не видел Вашего файла, чтобы понять это самостоятельно и, понятно, никто не читал этого в Вашем описании задачи, потому что это не очевидно Вам самому
 
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Вот примерно такой файл. Выгружаю данные из Delphi.  При выгрузке могут создаться до 14 групп, где в каждой группе может быть от 3 до 5 столбцов. Если-бы все было статически, ваша-бы подсказка подошла на все 100%. Но это еще не все, перед группами могут быть до 5 столбцов, которые не группируются.
Если с помощью VBS не удастся реализовать идею, тогда придется в коде Delphi писать кучу вариантов, а потом формировать скрипт.
 
Код
Sub ShowHideCols()
  Dim c&, cg&
  c = 1
  Do
    If Columns(c).OutlineLevel = 2 Then
      cg = cg + 1
    Else
      If cg > 0 Then If cg = 3 Or cg = 5 Then Columns(c - cg).Resize(, cg).Hidden = cg = 5
      cg = 0
    End If
    c = c + 1
  Loop Until c >= ActiveSheet.UsedRange.Columns.Count
End Sub
Изменено: Ігор Гончаренко - 09.08.2018 20:07:00
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко,Спасибо большое. Думаю,то  что  надо, внутри IF еще пару строк допишу.
 
Ігор Гончаренко,Доброго дня.
подскажите пожалуйста,  если известно количество групп столбцов, можно их как-бы пронумеровать через переменные, т.е.
1. есть 5 групп столбцов
2. объявляем 5 переменных, c1&, c2&  c3&, c4& c5&
3. проходимся по циклу с условием  ActiveSheet.UsedRange.Columns.Count и присваиваем значение каждой переменной после нахождения очередной группы.
В цикле надо конечно проверять что переменной уже есть значение.
Единственное пока под вопросом, как свернуть-развернуть какую-то группу, если не известно кол-во столбцов в ней. Для группы находящейся между какими-то двумя группами еще можно вычислить, а если это последняя группа?
зы/ мысли вслух. Буду рад, если что-то подскажете, если я что-то упустил или в неправильном направление.
Спасибо. Удачи.
 
Правила форума, о нескольких вопросах в одной теме
Страницы: 1
Наверх