miércoles, 17 de julio de 2019

Power Query: Recuperar datos de otras filas

Hoy veremos como Power Query nos permite recuperar información de otras filas dentro de la misma tabla...
En este ejemplo emplearemos una Columna personalizada.

Power Query: Recuperar datos de otras filas



Como siempre cargaremos nuestra tabla en la hoja de cálculo (llamada 'Tabla1') desde la ficha Datos > grupo Obtener y transformar > botón Desde tabla o rango.
Esto nos abrirá el Editor de Power Query donde realizaremos algunas acciones...
1- agregaremos una columna índice desde el menú de Agregar columnas - grupo General - botón Columna de índice - Desde 1

Power Query: Recuperar datos de otras filas


2- agregamos una Columna personalizada desde el menú de Agregar columnas - grupo General - botón Columna personalizada

Power Query: Recuperar datos de otras filas


Este condicional es clave ya que es la acción que recupera datos de otra fila.
La clave es el uso de los corchetes:
#"Índice agregado"{[Índice]} [#"Cód artículo"]
aquí empleamos el valor de cada fila del campo 'Índice' (que definimos de 1 a 20) para recuperar el valor del campo 'Cód artículo'... jugamos con la numeración real de los registros que internamente empieza en cero!!, así al indicar fila 1 estamos refiriéndonos a la segunda fila real...


3- eliminamos las filas con error. Desde el menú Inicio - grupo Reducir filas - botón Quitar filas - Quitar errores

Power Query: Recuperar datos de otras filas



4- Filtramos los NO 'null' por el campo 'Descripción'.

Power Query: Recuperar datos de otras filas



El código completo generado con las acciones realizadas:
let
    Origen = Excel.CurrentWorkbook(){[Name="Tabla1"]}[Content],
    #"Tipo cambiado" = Table.TransformColumnTypes(Origen,{{"Fecha compra", type date}, 
                                                          {"Cód artículo", type text}, 
                                                          {"Unidades", Int64.Type}}),
    #"Índice agregado" = Table.AddIndexColumn(#"Tipo cambiado", "Índice", 1, 1),
    #"Personalizada agregada" = Table.AddColumn(#"Índice agregado", "Descripción", 
            each if #"Índice agregado"{[Índice]} [Fecha compra] = null then 
                #"Índice agregado"{[Índice]} [#"Cód artículo"] 
            else 
                if #"Índice agregado"{[Índice]} [Índice] <= Table.RowCount(#"Índice agregado")-1 then null else null
                                                                                                                     ),
    #"Errores quitados" = Table.RemoveRowsWithErrors(#"Personalizada agregada", {"Descripción"}),
    #"Filas filtradas" = Table.SelectRows(#"Errores quitados", each ([Descripción] <> null))
in
    #"Filas filtradas"


Finalmente Cerraremos y cargaremos la consulta y llevaremos el resultado a la hoja deseada...

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.