Страницы: 1
RSS
Группировка строк по значению в первой ячейки
 
Добрый день. Помогите написать макрос для группировки строк которые содержат в левой ячейке названий
"
от 20 до   50 тыс
от 10 до 20 тыс
от 5 до 10 тыс
от 3 до 5 тыс
от 1 до 3 тыс
до 1 тыс
Пример в файле.
Спасибо.
Изменено: Kentavrik7 - 18.03.2019 10:06:06
 
Добрый день. Можно как-то так (копия лист1, фигура с побудительной надписью):
Скрытый текст
Кому решение нужно - тот пример и рисует.
 
Пытливый,Спасибо большое, то есть данный макрос свертывает все до сл записи "Неотработанная" так?
Изменено: Kentavrik7 - 14.11.2018 11:08:00
 
Макрос делает следующее:
1. Определяет последнюю заполненную ячейку по столбцу А
2. От строки последней заполненной ячейки до 3 строки с шагом -1 (т.е. цикл задом-наперед), проверка - если в ячейке нет значения "Не обработано", то для строки такой ячейки значение OutlineLevel устанавливаем = 2.

Таким образом получаются нужные группировки (для примера).
Кому решение нужно - тот пример и рисует.
 
Пытливый,Спасибо большое буду пробовать)))
 
Пытливый,А если чуть усложнить и оставлять заголовки вот как на последнем примере
Изменено: Kentavrik7 - 18.03.2019 10:06:14
 
Код
Sub DataGrup()
    Dim lngI As Long, lngJ As Long
    For lngI = Cells(Rows.Count, 1).End(xlUp).Row To 3 Step -1
        If Cells(lngI, 1) <> "Íå îãðàíè÷åí" And Cells(lngI, 1).Font.Bold = False Then
        Rows(lngI).OutlineLevel = 2
        End If
    Next lngI
End Sub


Встречный вопрос - а чего сразу не показывать пример на реальной структуре (ну, чтоб потом не спрашивать "... а чуть усложнить...?")?
:)
Кому решение нужно - тот пример и рисует.
 
Пытливый,Да думал куска хватит, для понимания сути, смотрите все таки чтобы групировка была универсальной (так как появилась необходимость остальные данные сгруппировать тоже подробнее в файле) нужно скрывать именно по содержимому то есть по названиям
от 20 до   50 тыс
от 10 до 20 тыс
от 5 до 10 тыс
от 3 до 5 тыс
от 1 до 3 тыс
до 1 тыс
Сорри за такое
 
Kentavrik7, ориентируйтесь по отступу 4. Вникайте в макрос.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Код
Sub DataGrup()
    Dim lngI As Long, lngJ As Long
    For lngI = Cells(Rows.Count, 1).End(xlUp).Row To 3 Step -1
        If Cells(lngI, 1).Font.Bold = False Then
        Rows(lngI).OutlineLevel = 2
        End If
    Next lngI
End Sub

У вас в файле границы для группировки полужирным шрифтом обозначены. Вот на него и ориентируйтесь - там где НЕ жирный шрифт - там делаем группировку, иначе - фиг.
Или, как справедливо советуют камрады, ориентироваться можно по отступу в конкретной проверяемой ячейке (для группируемых данных он больше, чем для заголовков).
Изменено: Пытливый - 14.11.2018 12:11:57
Кому решение нужно - тот пример и рисует.
 
Пытливый, JayBhagavan,Спасибо большое)
 
Пытливый,Хорошая идея у вас, макрос работает на ура, спасибо) Я вообще думал что нужно создать массив с названиями какие необходимо группировать, и макрос находя их группировал бы. Но так тоже подойдет)
Просто например если делать сводную таблицу то там такой макрос работать уже не будет) А возможно вскоре потребуется группировать и в сводных
Изменено: Kentavrik7 - 14.11.2018 12:50:50
 
Kentavrik7, а зачем в сводных макросом группировать, если в них и так встроена группировка?

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan,Не встроена. Групировать чтобы скрывать ненужную в данный момент информацию, или наоборот раскрывать ее
 
Kentavrik7, покажите мне сводную в файле, а я Вам покажу группировку в ней НЕ через данные\группировать.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan,Я не могу вам скинуть рабочие сводные, скиньте любую для примера
 
Kentavrik7, мне не нужны Ваши рабочие. Сделайте пример сводной в которой Вам не хватает группировки.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan,вот, нужно сгруппировать как в сводной сверху, как вы кроме как руками или макросом вы как это планируете делать?  
Изменено: Kentavrik7 - 18.03.2019 10:06:27
 
Kentavrik7, попробуйте по-нажимать обведенные элементы.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan,эм, я вообще-то написал, как нужно свернуть, а не так как он сворачивает. Необходимо до красного, пример ниже таблицы
 
Kentavrik7, не вижу смысла в такой группировке, но если Вам нужно, то, да, делайте макросом.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, вы его не видите потому что задачи такой не стоит) Иногда нужно показать одну строку, например если там будут:
от 20 до   50 тыс
от 10 до 20 тыс
от 5 до 10 тыс
от 3 до 5 тыс
от 1 до 3 тыс
до 1 тыс
И возникнет необходимость во всех отчетах показывать только тех кто "от 3 до 5 тыс" , нужна будет такая группировка)
Страницы: 1
Наверх