Страницы: 1
RSS
Фильтр данных по группам
 
Здравствуйте, у меня такая проблема, в документе есть несколько группировок по датам, необходимо установить фильтр, но фильтр работает только по первой группе и не обращает внимание на остальные, все группы находятся строго на одном листе и идут по строчно по датам.
Изменено: Oleg1980 - 31.07.2013 20:26:53
 
Здравствуйте. Было бы неплохо увидеть файл-пример. :)
 
да конечно
 
Это кто Вас учил таким художествам? Хотите нормально работать с таблицей:
1) Избавляйтесь от объединенных ячеек, в каждую строчку - дату.
2) Избавляйтесь от пустых строк.
И будет Вам счастье.
Я сам - дурнее всякого примера! ...
 
проблема будет в том, что тогда будет 1000000 строк и я сойду с ума!
 
Ну можно и с таким объединением сделать, чтоб фильтр работал - но эта работа может свести с ума ещё быстрее  :)
Вот сделал для первого числа.
И в пустые строки нужно забить хоть пробелы.

P.S.Делал так - в каждую строку дату, копируем этот диапазон куда-нибудь в сторону, объединяем.
Затем объединённый формат копируем поверх нужных дат (количество объединения должно совпадать).
Для сентября делать проще - там нет пустых строк.
Изменено: Hugo - 07.08.2013 18:17:36
 
Если они - строки -  есть, то они в любом случае будут. А ваши "объединенки" - мираж, а выкрутас с пустыми строками - ва-а-а-ще... ;)
И вообще, имхо, фильтровать в XL мильон строк - извращение; выбираем запросом, сводной - и потом только...
ps Поделитесь генеральной идеей - что из чего, зачем, куда желаете получить?
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Спасибо, а почему вообще возникает такая ситуация, почему он не фильтрует тупо по всем данным, включая пустые строки?
 
Цитата
не фильтрует тупо по всем данным, включая пустые строки?
Пустая строка - своей пустотой РАЗРЕЗАЕТ данные на куски.
Для пробы -  сделайте первый левый столбец/поле сплошной нумерацией, "шапку" залатайте, включите фильтр и смотрите как все будет работать... ;)
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
увидел, спасибо, век живи век учись!
 
Подскажите, пожалуйста:
Я знаю, как сделать закрепленные области по вертикали или по горизонтали, а можно сделать одновременно и по вертикали и по горизонтали?
 
можно, ставите курсор в ячейку строки  и столюци до которой нужно закрепить и в меню вид выбираете закрепить области
 
Спасибо, все получилось?
 
Подскажите пожалуйста.
У меня идет фильтрация по группировкам, если группировка данных открыта, то фильтр видит по каким показателям можно отбирать данные, если группировка закрыта то варианты фильтра не предлагается, как этого можно избежать?
 
Подскажите пожалуйста, существует ли возможность фильтровать исключительно по группировкам.
Суть проблемы:  большая таблица (более 30000 строк) и большое количество группировок (до 8-й). Задача - показать записи, принадлежащие только отобранной группе.
Например требуется вывести строки, принадлежащие только 7-й группе. Как это сделать?
Возможно я ламер, но после долгого "рытья" экселя и инета не нашел такого варианта.
 
Цитата
Z написал: Пустая строка - своей пустотой РАЗРЕЗАЕТ данные на куски.
Достаточно выделить необходимый диапазон и нажать на кнопку фильтр

Цитата
ЭксельНачало написал: принадлежащие только 7-й группе
Вверху (около А1) есть кнопки под уровни группировки
не нужно оскорблять.
 
Цитата
принадлежащие только 7-й группеВверху (около А1) есть кнопки под уровни группировки
Спасибо конечно, но я эти кнопки знаю.
Проблема в другом - если нажать кнопку 7-й группы, то раскрываются все вышестоящие группы тоже.
Получается, что у меня на экране отображаются все группы до 7-й (7-я включительно)
А мне нужно видеть только 7-ю группу и никакие другие.
 
Цитата
А мне нужно видеть только 7-ю группу и никакие другие.
Чтобы отфильтровать данные по уровню группировки, в автофильтр нужно добавить новый столбец, в каждой строке которого прописать пользовательскую функцию, определяющую номер уровня группировки.

Пользовательская функция VBA, которая определяет уровень группировки строки, выглядит примерно так:
Код
Public Function RowOutlineLevel() As Byte
   Application.Volatile
   
   Dim rCallerCell As Range: Set rCallerCell = Application.Caller
   
   RowOutlineLevel = rCallerCell.Rows.OutlineLevel
   
   If RowOutlineLevel = 1 Then
      Dim wsh As Worksheet
      Set wsh = rCallerCell.Worksheet
      
      Dim bSummaryRowIsAbove As Boolean
      bSummaryRowIsAbove = wsh.Outline.SummaryRow = xlSummaryAbove
      
      Dim lCallerCellRow As Long: lCallerCellRow = rCallerCell.Row
      
      If bSummaryRowIsAbove And lCallerCellRow = wsh.Rows.Count _
           Or Not bSummaryRowIsAbove And lCallerCellRow = 1 Then
         RowOutlineLevel = 0
         Exit Function
      End If
      
      Dim bNextCellRowOutlineLevel As Byte
      bNextCellRowOutlineLevel = rCallerCell.Rows(-2 * bSummaryRowIsAbove).OutlineLevel
      
      RowOutlineLevel = 1 + (bNextCellRowOutlineLevel = 1)
   End If
End Function
Скрытый текст

Далее во все строки добавленного столбца (в которых есть группировка), нужно ввести приведенную ниже формулу:
Код
= RowOutlineLevel()

После этого нужно развернуть все уровни группировки (структуры), так как фильтрация работает только с видимыми строками.
Последний шаг - к добавленному столбцу применить фильтр, выбрав 7 из списка автофильтра.

В результате вышеописанных действий вы будете видеть только 7-й уровень группировки. Или любой другой по вашему выбору, если на последнем шаге в автофильтре добавленного столбца выбрать другое значение.
Изменено: neophyte - 24.05.2025 17:52:35
Страницы: 1
Читают тему
Наверх