Без использования пользовательского кода:
Загрузка данных в Powerquery с использованием данных ... Из таблицы / диапазона ...
Щелкните правой кнопкой мыши по столбцу Дата, выберите unpivot другие столбцы
Добавить столбец ... индексный столбец ... использовать имя столбца по умолчанию Индекс
Добавить столбец ... Пользовательский столбец ... с формулой = Number.Mod ([Index], 2) и имя по умолчанию Custom
Преобразует столбец индекса в чередующиеся 0/1 с
(при условии, что ваш второй столбец называется Value.1) Добавить столбец ... Custom Column ... with формула = # «Добавлен пользовательский» {[Индекс] +1} [Значение.1] и имя по умолчанию Пользовательский.1
Это поместит значение из строки ниже текущего в текущая строка
Удалите чередующуюся строку, щелкнув стрелку рядом со столбцом «Пользовательский» и удалив [x] рядом со столбцами 1
. Щелкните, выберите «Атрибут», «Индекс» и «Пользовательский», щелкните правой кнопкой мыши пункт «Удалить столбцы» *. 1023 *
Загрузка и закрытие
Предполагая, что ваши данные загружены как диапазон Table1, вы можете использовать этот код, вставленный в в начало ... Дополнительно ...
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"Date"}, "Attribute", "Value.1"),
#"Added Index" = Table.AddIndexColumn(#"Unpivoted Other Columns", "Index", 0, 1),
#"Added Custom" = Table.AddColumn(#"Added Index", "Custom", each Number.Mod([Index],2)),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "Custom.1", each #"Added Custom"{[Index]+1}[Value.1]),
#"Filtered Rows" = Table.SelectRows(#"Added Custom1", each ([Custom] = 0)),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Attribute", "Index", "Custom"})
in #"Removed Columns"
Если вы хотите использовать какой-то пользовательский код, это создает две таблицы: одну таблицу с нечетными столбцами и одну с четными столбцами, отменяет поворот каждой из них, добавляет индекс для обоих, а затем объединяет их обратно на этот индекс. Работает для любого количества столбцов, может быть быстрее, чем выше для больших наборов данных.
Предполагая, что ваши данные загружены как диапазон Table1, вы можете использовать этот код, вставленный в Home ... Advanced ...
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
OddUnpivot= Table.AddIndexColumn(Table.UnpivotOtherColumns(Table.RemoveColumns(Source,List.RemoveFirstN(List.Alternate(Table.ColumnNames(Source),1,1,1),1)), {"date"}, "Attribute", "Value"), "Index", 0, 1),
EvenUnpivot= Table.AddIndexColumn(Table.UnpivotOtherColumns(Table.RemoveColumns(Source,List.Alternate(Table.ColumnNames(Source),1,1)), {"date"}, "Attribute", "Value"), "Index", 0, 1),
#"Merged Queries" = Table.NestedJoin(OddUnpivot,{"Index"},EvenUnpivot,{"Index"},"Table2",JoinKind.LeftOuter),
#"Expanded Table" = Table.ExpandTableColumn(#"Merged Queries", "Table2", {"Value"}, {"Value.1"}),
#"Removed Columns" = Table.RemoveColumns(#"Expanded Table",{"Attribute", "Index"})
in #"Removed Columns"