Así es como se hace en PowerQuery.
Mueva id y total a la izquierda, seleccione id y total, luego use Transformar>Desvincular otras columnas para obtener esto:
Seleccione la columna Valor, haga clic con el botón derecho y use Dividir la columna por delimitador, configurado de esta manera:
Ahora tiene esto:
Seleccione id, total y Atributo, luego use Transformar>Desvincular otras columnas. Debería tener esto ahora:
Seleccione Atributo y use Transformar>Columna de pivote, configurado de esta manera:
Debería tener esto ahora:
Elimine / cambie / reposicione las columnas según corresponda, luego use Inicio>Cerrar y cargar para volver a colocar los datos en el libro de trabajo. He renombrado y cambiado la columna Atributo.1 para mostrar un índice dentro de cada grupo (¡podría ser útil más adelante!):
Mis datos fuente están en una tabla llamada Tabla1. Aquí está el texto completo del Editor Avanzado:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"id", type text}, {"quantity", type text}, {"total", type number}, {"item price", type text}, {"article number", type text}}),
#"Reordered Columns" = Table.ReorderColumns(#"Changed Type",{"id", "total", "quantity", "item price", "article number"}),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Reordered Columns", {"id", "total"}, "Attribute", "Value"),
#"Split Column by Delimiter" = Table.SplitColumn(#"Unpivoted Other Columns", "Value", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.Csv), {"Value.1", "Value.2", "Value.3"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Value.1", type number}, {"Value.2", type number}, {"Value.3", type number}}),
#"Unpivoted Other Columns1" = Table.UnpivotOtherColumns(#"Changed Type1", {"id", "total", "Attribute"}, "Attribute.1", "Value"),
#"Pivoted Column" = Table.Pivot(#"Unpivoted Other Columns1", List.Distinct(#"Unpivoted Other Columns1"[Attribute]), "Attribute", "Value"),
#"Renamed Columns" = Table.RenameColumns(#"Pivoted Column",{{"Attribute.1", "index_in_id"}}),
#"Replaced Value" = Table.ReplaceValue(#"Renamed Columns","Value.","",Replacer.ReplaceText,{"index_in_id"}),
#"Changed Type2" = Table.TransformColumnTypes(#"Replaced Value",{{"index_in_id", Int64.Type}})
in
#"Changed Type2"