Hola a todos!.
Este post es la alternativa de Power Query a VBA sobre esta publicación: TRANSPONER RANGO EN HORIZONTAL SEGÚN NÚMERO DE ELEMENTOS REPETIDOS CON VBA
El problema de la programación realizada con VBA es que cuando tratamos con bases de datos de gran volumen puede experimentar lentitud y (aunque se podría mejorar el código en VBA para hacerlo, por ejemplo con ADO y en SQL), prefiero solucionarlo con un poco de lenguaje M.
Vamos a utilizar el mismo ejemplo del post al que nos referimos:
El primer paso es cargar la tabla en Query y luego abrir el editor avanzado para incluir el código:
let
Origen = Excel.CurrentWorkbook(){[Name="Tabla1"]}[Content],
#"Agrupar filas" = Table.Group(#"Origen", {"ID"}, {{"Recuento", each Table.AddIndexColumn(_, "Cum",1,1), type table}}),
#"Recuento" = Table.ExpandTableColumn(#"Agrupar filas", "Recuento", {"EDAD", "Cum"}, {"EDAD", "Cum"}),
#"Output" = Table.Pivot(Table.TransformColumnTypes(#"Recuento", {{"Cum", type text}}), List.Distinct(Table.TransformColumnTypes(#"Recuento", {{"Cum", type text}})[Cum]), "Cum", "EDAD")
in
#"Output"
Y el resultado que ya podemos previsualizar en la ventana del editor es el correcto:
Donde los nulos serán celdas en blanco y cada hijo se va colocando en la columna correspondiente del ID de sus padres.
Finalmente lo único que debemos hacer es exportar a la hoja de Excel el resultado:
Y como podéis ver es el mismo resultado que la macro del ejemplo del post anterior, pero mucho más rápido.
Podéis descargar la plantilla del ejemplo anterior para realizar pruebas.
Y esto esto es todo, espero que sea de utilidad!!.
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies