А мне нужно видеть только 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
Скрытый текст
Код вышеприведенной функции нужно добавить в стандартный модуль проекта данной книги. Для этого:
Открываем редактор VBA с помощью сочетаний клавиш Alt+F11
Открываем окно Project Explorer (если оно вдруг было закрыто) с помощью сочетаний клавиш Ctrl+R
В окне Project Explorer левой клавишей мыши выделяем строку VBAProject (<Название нашей книги>)
Добавляем новый стандартный модуль в проект нашей книги с помощью главного меню VBE: Insert -> Module
Вставляем в большое окно справа вверху код пользовательской функции
Далее во все строки добавленного столбца (в которых есть группировка), нужно ввести приведенную ниже формулу:
Код
= RowOutlineLevel()
После этого нужно развернуть все уровни группировки (структуры), так как фильтрация работает только с видимыми строками. Последний шаг - к добавленному столбцу применить фильтр, выбрав 7 из списка автофильтра.
В результате вышеописанных действий вы будете видеть только 7-й уровень группировки. Или любой другой по вашему выбору, если на последнем шаге в автофильтре добавленного столбца выбрать другое значение.
Разделение столбца можно сделать за 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 тоже легко с этим справляется