У меня есть таблица, в строках которой есть несколько заголовков, которые я хочу сохранить при развороте таблицы, но я не смог найти способ развернуть ее по мере необходимости. Ниже вы найдете пример исходной таблицы.
Ниже показано, чего я хочу достичь (отменить поворот 4 столбцов, но сохранить заголовки в строках как новые столбцы).
Я считаю, что этого можно достичь только с помощью специального кода, но я не знаком с ним, кроме стандартных функций.
Заранее спасибо и, пожалуйста, дайте мне знать, если какая-либо другая информация актуальна.
[Обновлено: дата в таблице фактических показателей должна быть 20 и 21 финансовый год, и год также должен измениться, то же самое и для плана, должно быть 20 и 21 финансовый год, и год также должен измениться. Я не буду менять сейчас, так как это изменит ответы, которые решили мою проблему с преобразованием умноженных заголовков в строках в столбцы]
Ваше здоровье
@teylyn, вы абсолютно правы, это должно было быть в следующем году, и план должен был быть на 20 финансовый год, а затем на 21 финансовый год.


let Source = Excel.CurrentWorkbook(){[Name = "Table3"]}[Content],
NewNames=List.Transform(List.Zip({
Record.FieldValues(Source{0}),
Record.FieldValues(Source{1}),
List.Transform(Record.FieldValues(Source{2}), each Text.From(_)
)}), each Text.Combine(_,":")),
Rename=Table.RenameColumns(Table.Skip(Source,3),List.Zip({Table.ColumnNames(Source),NewNames})),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Rename, {"Country", "Owner"}, "Attribute", "Value"),
#"Split Column by Delimiter" = Table.SplitColumn(#"Unpivoted Other Columns", "Attribute", Splitter.SplitTextByDelimiter(":", QuoteStyle.Csv), {"Version", "Year", "Date"}),
Touchup=Table.TransformColumns(#"Split Column by Delimiter",{{"Version", each Text.Combine(List.RemoveItems(Text.ToList(_),{"0".."9"}))}}),
Touchup2=Table.TransformColumns(Touchup,{{"Date", each Date.From(Number.From(_))}}),
#"Changed Type" = Table.TransformColumnTypes(Touchup2,{{"Date", type date}})
in #"Changed Type"
Вот один из способов сделать это в POWER QUERY
Structured References или Tables, но обратите внимание, что при нажатии CTRL+T, чтобы преобразовать то же самое, не выбирайте My Table As Headers.Data Tab --> Get Data --> From Other Sources --> Blank Query.Power Query, теперь на вкладке Home в том же окне нажмите Advanced Editor и вставьте следующий код, не забудьте изменить имя таблицы в соответствии с вашими предпочтениями.let
Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
First3Rows = Table.FirstN(Source,3),
Rows2Columns = Table.Transpose(First3Rows),
Merged = Table.CombineColumns(Rows2Columns,{"Column1", "Column2","Column3"},Combiner.CombineTextByDelimiter(" ", QuoteStyle.None),"Merged"),
Columns2Rows = Table.Transpose(Merged),
Combined = Table.Combine({Columns2Rows,Table.RemoveFirstN(Source,3)}),
PromotedHeaders = Table.PromoteHeaders(Combined, [PromoteAllScalars=true]),
UnpivotedOtherColumns = Table.UnpivotOtherColumns(PromotedHeaders, {" Country", " Owner"}, "Attribute", "Value"),
SplitColumnbyDelimiter = Table.SplitColumn(UnpivotedOtherColumns, "Attribute", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"Version", "Year", "Date"}),
#"Extracted Text Before Delimiter" = Table.TransformColumns(SplitColumnbyDelimiter, {{"Date", each Text.BeforeDelimiter(_, "_"), type text}}),
#"Changed Type" = Table.TransformColumnTypes(#"Extracted Text Before Delimiter",{{" Country", type text}, {" Owner", type text}, {"Version", type text}, {"Year", type text}, {"Date", type date}, {"Value", Int64.Type}})
in
#"Changed Type"
Я думаю, что в вашей таблице образцов есть ошибка. В синей таблице не должен быть один и тот же финансовый год для обоих столбцов «Фактические данные», не так ли?
@teylyn, мадам, я скопировал образец из ОП. Я не проверял. Я был занят попытками решить эту проблему. ОП должен это уточнить, но ты прав
Извините, я не увидел, что это был ваш ответ. Я только что увидел, как мой экран мигнул, и текст появился в формате Excel. Я думал, что это вопрос. Я тоже добавил комментарий к вопросу.
Большое спасибо за объясненные шаги, это сработало хорошо, мне просто нужно было изменить тип даты на текст перед объединением трех шагов столбца, потому что я получал ошибку. Добавив, что все работает отлично! Ниже вы найдете шаг, который я добавил между третьим шагом (Rows2Columns) и 4-м (объединение). #"Измененный тип1" = Table.TransformColumnTypes(Rows2Columns,{{"Столбец3", введите текст}}),
@teylyn прав в своей точке зрения, и спасибо, что указали на это. Я не буду менять исходную таблицу, чтобы не изменить весь ввод и вывод. В конце концов, оба ответа были правильными, и спасибо за помощь.
@MartimOnFire не знаю, почему мне не нужно менять тип данных, он мне подходит.
Я понял, почему возникла ошибка, а я нет, потому что я скопировал данные из вашего сообщения в текстовом формате, и PQ прочитал их как общие.
О, великолепно, это имеет смысл @MayukhBhattacharya 😉 спасибо огромное за помощь и вклад
Я думаю, что в вашей таблице образцов есть ошибка. В первой таблице не должен быть один и тот же финансовый год для обоих столбцов «Фактические данные», не так ли?