Un usuario Pregunto ✅
Anónimo
Hola, todos,
Tengo una fuente de Excel no estructurada y necesito transformarla. Alguien puede ayudarme?
Aquí están los datos de muestra:
Empresa / Característica / Proyecto | Monto |
Compañía: Compañía A | 1600 |
Característica: Característica 1 | 1000 |
Proyecto AAA | 200 |
Proyecto BBB | 300 |
Proyecto CCC | 500 |
Característica: Característica 2 | 600 |
Proyecto AAA | 100 |
Proyecto BBB | 200 |
Proyecto CCC | 300 |
Compañía: Compañía B | 1000 |
Característica: Característica 1 | 1000 |
Proyecto AAA | 200 |
Proyecto BBB | 300 |
Proyecto CCC | 500 |
Compañía: Compañía C | 1100 |
Característica: Característica 1 | 500 |
Proyecto AAA | 200 |
Proyecto BBB | 300 |
Característica: Característica 2 | 600 |
Proyecto AAA | 100 |
Proyecto BBB | 200 |
Proyecto CCC | 300 |
Este es el resultado esperado:
Empresa | Característica | Proyecto | Monto |
Empresa A | Característica 1 | Proyecto AAA | 200 |
Empresa A | Característica 1 | Proyecto BBB | 300 |
Empresa A | Característica 1 | Proyecto CCC | 500 |
Empresa A | Característica 2 | Proyecto AAA | 100 |
Empresa A | Característica 2 | Proyecto BBB | 200 |
Empresa A | Característica 2 | Proyecto CCC | 300 |
Empresa B | Característica 1 | Proyecto AAA | 200 |
Empresa B | Característica 1 | Proyecto BBB | 300 |
Empresa B | Característica 1 | Proyecto CCC | 500 |
Empresa C | Característica 1 | Proyecto AAA | 200 |
Empresa C | Característica 1 | Proyecto BBB | 300 |
Empresa C | Característica 2 | Proyecto AAA | 100 |
Compañía C | Característica 2 | Proyecto BBB | 200 |
Empresa C | Característica 2 | Proyecto CCC | 300 |
¡Muchas gracias!
neatdot
let Source = Excel.Workbook(File.Contents("C:UsersSteve JamesDesktopsample.xlsx"), null, true), Sheet1_Sheet = Source{[Item="Sheet1",Kind="Sheet"]}[Data], #"Removed Blank Rows" = Table.SelectRows(Sheet1_Sheet, each not List.IsEmpty(List.RemoveMatchingItems(Record.FieldValues(_), {"", null}))), #"Removed Top Rows" = Table.Skip(#"Removed Blank Rows",1), #"Renamed Columns" = Table.RenameColumns(#"Removed Top Rows",{{"Column1", "Attributes"}, {"Column2", "Amount"}}), #"Added Custom" = Table.AddColumn(#"Renamed Columns", "Company", each if Text.Start([Attributes],9)="Company: " then Text.AfterDelimiter([Attributes], ": ") else null), #"Filled Down" = Table.FillDown(#"Added Custom",{"Company"}), #"Filtered Rows" = Table.SelectRows(#"Filled Down", each not Text.StartsWith([Attributes], "Company: ")), #"Added Custom1" = Table.AddColumn(#"Filtered Rows", "Feature", each if Text.Start([Attributes],9) = "Feature: " then Text.AfterDelimiter([Attributes], ": ") else null), #"Filled Down1" = Table.FillDown(#"Added Custom1",{"Feature"}), #"Added Custom2" = Table.AddColumn(#"Filled Down1", "Project", each if Text.Start([Attributes],8)="Project " then [Attributes] else null), #"Filtered Rows1" = Table.SelectRows(#"Added Custom2", each ([Project] <> null)), #"Reordered Columns" = Table.ReorderColumns(#"Filtered Rows1",{"Attributes", "Company", "Feature", "Project", "Amount"}), #"Removed Columns" = Table.RemoveColumns(#"Reordered Columns",{"Attributes"}), #"Changed Type" = Table.TransformColumnTypes(#"Removed Columns",{{"Company", type text}, {"Feature", type text}, {"Project", type text}, {"Amount", Int64.Type}}) in #"Changed Type"
neatdot
let Source = Excel.Workbook(File.Contents("C:UsersSteve JamesDesktopsample.xlsx"), null, true), Sheet1_Sheet = Source{[Item="Sheet1",Kind="Sheet"]}[Data], #"Removed Blank Rows" = Table.SelectRows(Sheet1_Sheet, each not List.IsEmpty(List.RemoveMatchingItems(Record.FieldValues(_), {"", null}))), #"Removed Top Rows" = Table.Skip(#"Removed Blank Rows",1), #"Renamed Columns" = Table.RenameColumns(#"Removed Top Rows",{{"Column1", "Attributes"}, {"Column2", "Amount"}}), #"Added Custom" = Table.AddColumn(#"Renamed Columns", "Company", each if Text.Start([Attributes],9)="Company: " then Text.AfterDelimiter([Attributes], ": ") else null), #"Filled Down" = Table.FillDown(#"Added Custom",{"Company"}), #"Filtered Rows" = Table.SelectRows(#"Filled Down", each not Text.StartsWith([Attributes], "Company: ")), #"Added Custom1" = Table.AddColumn(#"Filtered Rows", "Feature", each if Text.Start([Attributes],9) = "Feature: " then Text.AfterDelimiter([Attributes], ": ") else null), #"Filled Down1" = Table.FillDown(#"Added Custom1",{"Feature"}), #"Added Custom2" = Table.AddColumn(#"Filled Down1", "Project", each if Text.Start([Attributes],8)="Project " then [Attributes] else null), #"Filtered Rows1" = Table.SelectRows(#"Added Custom2", each ([Project] <> null)), #"Reordered Columns" = Table.ReorderColumns(#"Filtered Rows1",{"Attributes", "Company", "Feature", "Project", "Amount"}), #"Removed Columns" = Table.RemoveColumns(#"Reordered Columns",{"Attributes"}), #"Changed Type" = Table.TransformColumnTypes(#"Removed Columns",{{"Company", type text}, {"Feature", type text}, {"Project", type text}, {"Amount", Int64.Type}}) in #"Changed Type"
Anónimo
En respuesta a neatdot
¡Muchas gracias! ¡Esto es lo que estoy buscando!