Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Фильтр данных по группам
 
Цитата
А мне нужно видеть только 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
Power Query про замену кучи пробелов в столбце на 1 разделитель
 
Разделение столбца можно сделать за 1 шаг с помощью стандартной функции Splitter.SplitTextByWhitespace
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Разделить столбец по разделителю" = Table.SplitColumn(Источник, "Признак ZM/ZHM pcb         spcb        pal         couche ", Splitter.SplitTextByWhitespace(QuoteStyle.None), {"Признак ZM/ZHM", "pcb", "spcb", "pal", "couche"})
in
    #"Разделить столбец по разделителю"

Или то же самое, но код разделен на несколько строк для удобочитаемости
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Разделить столбец по разделителю" =
        Table.SplitColumn(
            Источник,
            "Признак ZM/ZHM pcb         spcb        pal         couche ",
            Splitter.SplitTextByWhitespace(QuoteStyle.None),
            {"Признак ZM/ZHM", "pcb", "spcb", "pal", "couche"}
        )
in
    #"Разделить столбец по разделителю"


Кстати, если в данных есть неразрывные пробелы (с кодом 160), символы табуляции и т.д., Splitter.SplitTextByWhitespace тоже легко с этим справляется
Изменено: neophyte - 20.10.2022 12:12:24
Игнор пустых (null) ячеек при вычислениях (Power Query)
 
Цитата
Максим Зеленский написал:
Код
= List.Max( { [Столбец где могут быть null], 0 } ) - List.Max( { [Другой столбец где могут быть null], 0 } )
При отрицательных значениях в любом из столбцов результат будет некорректный

Нижеприведенное выражение должно правильно вычислять разность:
Код
= List.Sum( { [Столбец где могут быть null], -[Другой столбец где могут быть null], 0 } )
Изменено: neophyte - 26.02.2022 01:32:37
Страницы: 1
Наверх