Power Query - заполнить специальными текстовыми условиями - PullRequest
1 голос
/ 17 апреля 2020

Я пытаюсь очистить большой подробный отчет о прибылях и убытках, который включает в себя столбцы Category & Sub Category. Я успешно заполнил колонку Category. Однако столбец Sub Category содержит только имена подкатегорий, разбросанных по всему отчету, поэтому обычное заполнение не будет работать. Как заполнить, начиная с того, что существует значение подкатегории, но продолжается только до общего описания подкатегории?

Пример на рисунке ниже: Sub Category = "Closing stock - cattle"

Заполните этими точными словами - Closing stock - cattle до ячейки с надписью Total Closing stock - cattle. Затем Fill Down из новой подкатегории в том же формате.

По сути, слово Total является очень важной частью, поскольку я не хочу, чтобы это конкретное значение было заполнено вниз. Обратите внимание, что могут быть сотни строк, которые не имеют Sub category.

enter image description here

enter image description here

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

Попробуйте это

#"Duplicated Column" = Table.DuplicateColumn(#"PreviousStep", "Subcategory", "Dupe"),
#"Filled Down" = Table.FillDown(#"Duplicated Column",{"Dupe"}),
#"Added Custom" = Table.AddColumn(#"Filled Down", "Custom", each if [Subcategory]=null then (if Text.Contains([Dupe], "Total") then [Subcategory] else [Dupe]) else [Dupe]),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Subcategory", "Dupe"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Custom", "Subcategory"}})
1 голос
/ 17 апреля 2020

Отфильтруйте итоговые строки в их собственную таблицу, заполните, затем добавьте итоговые строки обратно.

let
    StartTable = <Your Data Source>,
    NoTotals = Table.SelectRows(StartTable, each not Text.Contains([Sub Category], "Total") or [Sub Category] = null),
    OnlyTotals = Table.SelectRows(StartTable, each Text.Contains([Sub Category], "Total")),
    FillDown = Table.FillDown(NoTotals, {"Sub Category"}),
    Append = Table.Combine({FillDown, OnlyTotals})
in
    Append

Если вам это нужно, чтобы вернуться в начальный порядок, добавьте столбец индекса перед выполнить любую фильтрацию, а затем отсортировать по этому индексу в качестве последнего шага.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...