6 febrero, 2025

TRANSPONER RANGO EN HORIZONTAL SEGÚN NÚMERO DE ELEMENTOS REPETIDOS CON POWER QUERY

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.

Donate Button with Credit Cards

¡¡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

Comparte este post

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies