miércoles, 12 de agosto de 2020

El mejor truco de la función FILTRAR

Hace una semana, rebuscando por la www, me encontré con el canal de Leila Gharani (muy recomendado!!) donde mostraba un gran truco al aplicar la función desbordada FILTRAR.
Me permito escribir sobre este 'tip' para extenderlo y hacerlo de general conocimiento por lo práctico y útil.
El mejor truco de la función FILTRAR

Como se observa en la imagen anterior, es posible obtener un desbordamiento de la función FILTRAR de aquellos registros que cumplan la condición dada (ventas de más de 90 unidades), pero de aquellos campos NO anexos, i.e., discontinuos que hayamos marcado como VERDADERO !!. Si has empleado ya esta función FILTRAR (disponible de momento solo para suscriptores de MS 365) entenderás la potencia del truco!.
El truco es incluir en el rango B1:G1 una secuencia de VERDADEROS o FALSOS, según queramos mostrar o no dicho campo... igualmente válido emplear valores 1 y 0, ya que de todos es sabido que
VERDADERO = 1
FALSO = 0

Entonces en J6 añadimos nuestra fórmula desbordada:
=ORDENAR(FILTRAR(FILTRAR(TblPedidos;TblPedidos[Unidades]>=$K$2);B1:G1);3;-1)

que descomponemos de la siguiente manera.... desde lo más profundo de la fórmula tenemos
FILTRAR(TblPedidos;TblPedidos[Unidades]>=$K$2)
Que nos devuelve TODOS los campos de la Tabla de trabajo que verifiquen la condición aportada de unidades vendidas...
El mejor truco de la función FILTRAR

Comprobamos como conseguimos los registros deseados PERO mostrando todos los campos del origen (Fecha País Sección Comercial Producto Unidades)

Ahora viene lo interesante... a esta matriz obtenida volvemos a aplicarle de nuevo la función FILTRAR indicando en el segundo argumento include el rango B1:G1, o si lo prefieres añadir manualmente la matriz
{FALSO\VERDADERO\FALSO\FALSO\VERDADERO\VERDADERO}
o
{0\1\0\0\1\1}
OJO con los indicadores de columnas, ya que dependiendo de la configuración podrían ser , ; \ o incluso /
Así pues con
FILTRAR(FILTRAR(TblPedidos;TblPedidos[Unidades]>=$K$2);B1:G1)
también podríamos, según comentado
FILTRAR(FILTRAR(TblPedidos;TblPedidos[Unidades]>=$K$2);{0\1\0\0\1\1})
El mejor truco de la función FILTRAR

tendríamos lo buscado...
se hizo la magia... obtenemos únicamente los campos deseados!!. ASOMBROSO!.

Finalmente aplicaremos la función ORDENAR para ver esos registros, sobre los campos requeridos, ordenados en sentido descendente según las unidades...
=ORDENAR(FILTRAR(FILTRAR(TblPedidos;TblPedidos[Unidades]>=$K$2);B1:G1);3;-1)
el segundo argumento de ORDENAR, el valor 3, nos indica que operamos la ordenación sobre el tercer campo/columna de la matriz devuelta de TRES campos.
El mejor truco de la función FILTRAR

Por último, si además queremos automatizar el encabezado del resultante, escribimos en la celda J5:
=INDICE(TblPedidos[#Encabezados];FILTRAR(B1:G1*(COLUMNA(B:G)-1);B1:G1*(COLUMNA(B:G)-1)>0))
que nos devuelve los Encabezados de los campos indicados con 1 o VERDADERO
El mejor truco de la función FILTRAR

No hay comentarios:

Publicar un comentario

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