Расчесывать столы, которые находятся рядом - PullRequest
0 голосов
/ 28 марта 2020

У меня ужасно настроены данные (это было сделано раньше времени), и мне нужно объединить их по диапазонам, листам и файлам.

Вот пример. Я пытаюсь добавить все три из этих диапазонов в одну таблицу с пометкой в ​​столбце, к какой категории относится позиция. enter image description here

1 Ответ

2 голосов
/ 30 марта 2020

Вот один из способов справиться с вашим примером. Я начал с листа Excel под названием Sheet1, как показано ниже:

enter image description here

Затем в другой книге я создал запрос Power Query с этим M-кодом:

let
    Source = Excel.Workbook(File.Contents("MyPath\MyFile.xlsx"), null, true),
    Sheet1_Sheet = Source{[Item="Sheet1",Kind="Sheet"]}[Data],
    #"Transposed Table" = Table.Transpose(Sheet1_Sheet),
    #"Removed Blank Rows" = Table.SelectRows(#"Transposed Table", each not List.IsEmpty(List.RemoveMatchingItems(Record.FieldValues(_), {"", null}))),
    #"Split Table by 3 Nested" = Table.Split(#"Removed Blank Rows",3),
    #"Inserted Row Nested" = List.Transform(#"Split Table by 3 Nested", each Table.InsertRows(_, Table.RowCount(_),{Record.FromList(List.Repeat({null},Table.ColumnCount(_)),Table.ColumnNames(_))})),
    #"Filled Category Down Nested" = List.Transform(#"Inserted Row Nested", each Table.FillDown(_,{"Column1"})),
    #"Transposed Tables Nested" = List.Transform(#"Filled Category Down Nested", each Table.Transpose(_)),
    #"Removed Blank Rows Nested" = List.Transform(#"Transposed Tables Nested", each Table.SelectRows(_, each not List.IsEmpty(List.RemoveMatchingItems(Record.FieldValues(_), {"", null})))),
    #"Filled Category Down Nested2" = List.Transform(#"Removed Blank Rows Nested", each Table.FillDown(_,{"Column4"})),
    #"Removed First LIne Nested" = List.Transform(#"Filled Category Down Nested2", each Table.Skip(_,1)),
    #"Promoted First Line Nested" = List.Transform(#"Removed First LIne Nested", each Table.PromoteHeaders(_, [PromoteAllScalars=true])),
    #"Renamed Category Column Nested" = List.Transform(#"Promoted First Line Nested", each Table.RenameColumns(_,{{Table.ColumnNames(_){3}, "Category"}})),
    #"Combined Nested Tables" = Table.Combine(#"Renamed Category Column Nested"),
    #"Reordered Columns" = Table.ReorderColumns(#"Combined Nested Tables",{"Category", "Header 1", "Header 2", "Header 3"})
in
    #"Reordered Columns"

Чтобы получить этот результат:

enter image description here

Большая часть преобразовательной работы выполняется во вложенных таблицах с помощью List.Transform.

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