Power Query: Manejo de varios encabezados idénticos - Consejos de Excel

Tabla de contenido

Nota

Este es uno de una serie de artículos que detallan las soluciones enviadas para el desafío Podcast 2316.

En mi problema original de modelado de datos, encontré un problema muy temprano en el proceso. Los datos entrantes iban a tener muchas columnas con un encabezado de Q1.

Muchas columnas

En mi solución, creé un rango con nombre "UglyData" y lo importé a Power Query. Esto llevó al resultado lamentable de Power Query al cambiar el nombre de mis columnas a Q1_1.

Columnas renombradas

Más tarde, después de desvincular, tuve que extraer solo los dos caracteres de la izquierda de esos encabezados.

Había tres soluciones independientes para este problema:

  • Wyn Hopkins y degradar encabezados
  • MF Wong y desmarque Mi tabla tiene encabezados (también sugerido por Peter Bartholomew)
  • Jason M y simplemente elimine los encabezados promocionados (también sugeridos por Ondřej Malinský y el MVP de Excel John MacDougall)

La primera innovación fue de Wyn Hopkins en Access Analytic. En lugar de un rango con nombre, Wyn convirtió los datos en una tabla usando Ctrl + T.En este punto, el daño a los títulos ya estaba hecho, ya que Excel convirtió los títulos a:

Convertido a tabla: Ctrl + T

Una vez que Wyn llevó los datos a Power Query, abrió el menú desplegable Usar primera fila como encabezados y eligió Usar encabezados como primera fila. Nunca me di cuenta de que esto estaba ahí. Crea un paso llamado Table.DemoteHeaders.

Usa encabezados como primera fila

Pero, incluso con la mejora de Wyn, aún más tarde tendría que extraer los primeros 2 caracteres de esos encabezados.

La segunda innovación es la técnica de MF Wong. Cuando creó la tabla, desmarcó ¡Mi tabla tiene encabezados!

Mi mesa tiene encabezados

Esto asegura que Excel deje los múltiples encabezados Q1 solos y que no sea necesario extraer el sufijo adicional más adelante.

Múltiples encabezados Q1

Entiendo que hay gente en el campo de "Me encantan las mesas". El video de MF Wong demostró cómo podía agregar nuevos empleados a la derecha de los datos y la tabla se expande automáticamente. Hay muchas buenas razones para usar tablas.

Pero, como me encantan los subtotales, las vistas personalizadas y el filtro por selección, tiendo a no usar tablas. Entonces, agradezco la solución de Jason M. Mantuvo los datos como el rango con nombre de UglyData. Tan pronto como importó los datos a Power Query, eliminó estos dos pasos:

Pasos eliminados

Ahora, con los datos simplemente en la Fila 1, no hay problema al tener muchas columnas llamadas Q1.

Muchas columnas del primer trimestre

Aquí está el código de Wyn Hopkin que muestra DemotedHeaders:

let Source = Excel.CurrentWorkbook()((Name="Table1"))(Content), #"Demoted Headers1" = Table.DemoteHeaders(Source), #"Transposed Table1" = Table.Transpose(#"Demoted Headers1"), #"Added Custom" = Table.AddColumn(#"Transposed Table1", "Custom", each if Text.Start((Column1),1) = "Q" then null else (Column1)), #"Filled Down" = Table.FillDown(#"Added Custom",("Custom")), #"Filtered Rows" = Table.SelectRows(#"Filled Down", each ((Custom) "Dept. Total")), #"Filtered Rows1" = Table.SelectRows(#"Filtered Rows", each not Text.StartsWith((Column1), "Employee")), #"Promoted Headers" = Table.PromoteHeaders(#"Filtered Rows1", (PromoteAllScalars=true)), #"Extracted First Characters" = Table.TransformColumns(#"Promoted Headers", (("Category Description", each Text.Start(_, 2), type text))), #"Reordered Columns" = Table.ReorderColumns(#"Extracted First Characters",("Category Description_1", "Category Description", "Administrative", "Holiday", "PTO/LOA/Jury Duty", "Project A", "Project B", "Project C")), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Reordered Columns", ("Category Description_1", "Category Description"), "Attribute", "Value"), #"Reordered Columns1" = Table.ReorderColumns(#"Unpivoted Other Columns",("Category Description_1", "Attribute", "Category Description", "Value")), #"Pivoted Column" = Table.Pivot(#"Reordered Columns1", List.Distinct(#"Reordered Columns1"(#"Category Description")), "Category Description", "Value", List.Sum), #"Reordered Columns2" = Table.ReorderColumns(#"Pivoted Column",("Attribute", "Category Description_1", "Q1", "Q2", "Q3", "Q4")), #"Renamed Columns" = Table.RenameColumns(#"Reordered Columns2",(("Attribute", "Cat Deasc"), ("Category Description_1", "Emp Name"))), #"Changed Type" = Table.TransformColumnTypes(#"Renamed Columns",(("Emp Name", type text), ("Q1", Int64.Type), ("Q2", Int64.Type), ("Q3", Int64.Type), ("Q4", Int64.Type))), #"Inserted Sum" = Table.AddColumn(#"Changed Type", "Total", each List.Sum(((Q1), (Q2), (Q3), (Q4))), Int64.Type) in #"Inserted Sum"

Regrese a la página principal del desafío Podcast 2316.

Lea el siguiente artículo de esta serie: Power Query: ¿Eliminar esto, Eliminar esos o no eliminar nada ?.

Articulos interesantes...