Hoy veremos un ejercicio sencillo pero muy práctico con Power Query: Aplicar sobre una columna un reemplazamiento condicionado a valores de terceras columnas.
En el ejemplo que propongo vamos a reemplazar los elementos de la columna 'Responsable' (cualquiera de ellos) que coincida con un país concreto ('ES') y un año en particular ('2020').
Así pues cargaremos nuestra tabla desde la ficha Datos > grupo Obtener y transformar > Desde Tabla o rango, y desde el editor de consultas de Power Query, seleccionamos nuestra tabla recien cargada y presionaremos Editor avanzado, donde implementaremos el siguiente código M:
Especialmente interesante el uso del 'each' que hemos aplicado, que permite recorrer fila por fila, aplicando, si cruza con las condiciones dadas, el reemplazamiento buscado...
En el ejemplo que propongo vamos a reemplazar los elementos de la columna 'Responsable' (cualquiera de ellos) que coincida con un país concreto ('ES') y un año en particular ('2020').
Así pues cargaremos nuestra tabla desde la ficha Datos > grupo Obtener y transformar > Desde Tabla o rango, y desde el editor de consultas de Power Query, seleccionamos nuestra tabla recien cargada y presionaremos Editor avanzado, donde implementaremos el siguiente código M:
let Origen = Excel.CurrentWorkbook(){[Name="Tabla1"]}[Content], //dejamos el tipo cambiado... TipoCambiado = Table.TransformColumnTypes(Origen,{{"Fecha", type date}, {"Cliente", type text}, {"Producto", type text}, {"País", type text}, {"Responsable", type text}}), //usamos la función Table.ReplaceValue //Table.ReplaceValue(table as table, oldValue as any, newValue as any, replacer as function, columnsToSearch as list) as table ReemplazoValorCondicionado= Table.ReplaceValue(TipoCambiado, //table sobre la que trabajamos each [Responsable], //valor viejo a cambiar //y con la condición definimos el nuevo valor por el que sustituiremos.. condicionado each if ([País]="ES" and Date.Year([Fecha])=2020 ) then "Ismael" else [Responsable], Replacer.ReplaceValue, //tipo de reemplazamiento {"Responsable"}) //columna donde buscar el valor a cambiar in ReemplazoValorCondicionado
Especialmente interesante el uso del 'each' que hemos aplicado, que permite recorrer fila por fila, aplicando, si cruza con las condiciones dadas, el reemplazamiento buscado...