La idea general es la siguiente: utilizaremos la fórmula ÍNDICE, la cual, dado un rango, un número de filas y un número de columnas, devuelve el valor de la celda que se encuentra en
esa posición del rango. Por supuesto, el rango será B1:C100 y la columna será la columna B, que es la columna 1 del rango.
Todo lo demás se enfocará en obtener los números de fila correctos. Por supuesto, los números de fila correctos son los números de fila en los que el estado es Activo.
Por supuesto, nos gustaría que la lista fuera un rango continuo, es decir, que si un empleado inactivo se encuentra entre dos empleados activos, al hacer el filtro nos gustaría que
los dos empleados activos quedaran en celdas contiguas. Si este no fuera algo importante, obviamente podríamos utilizar solo una fórmula SI que devolviera vacío al encontrar un
empleado en estado inactivo.
El primer paso
La siguiente fórmula permite discriminar con un número grande (en este caso 1000), las celdas del rango C4:C100 cuyo valor es "Inactivo"
=SI(C4:C100="Activo",1,1000)
- Si el estado es Activo, obtendremos el número de fila.
- Si el estado es Inactivo, obtendremos el número de fila multiplicado por 1000.
Ordenar la lista
Ahora procedemos a ordenar la lista para que los valores mayores a 1000 queden hasta el final. Esto lo podemos hacer utilizando la fórmula K.ESIMO.MENOR:
=K.ESIMO.MENOR(FILA(A4:A100)*
SI(C4:C100="Activo",1,1000),FILA(A1:A97))
Reemplazar valores por cadena vacía
Ahora nos gustaría discriminar con una cadena vacía los valores en los que el estado Inactivo. Dado que estos valores son siempre mayores que 1000, podemos utilizar:
=SI(K.ESIMO.MENOR(FILA(A4:A100)*
SI(C4:C100="Activo",1,1000),FILA(A1:A97))>1000,"",K.ESIMO.MENOR(FILA(A4:A100)*
SI(C4:C100="Activo",1,1000),FILA(A1:A97)))
Agregar ÍNDICE y SI.ERROR
¡Y ya lo tenemos! Lo que sigue es agregar la fórmula ÍNDICE y la fórmula SI.ERROR para discriminar los valores de error. La fórmula completa luciría así:
=SI.ERROR(INDICE(B1:C100,SI(K.ESIMO.MENOR(FILA(A4:A100)*
SI(C4:C100="Activo",1,1000),FILA(A1:A97))>1000,"",K.ESIMO.MENOR(FILA(A4:A100)*
SI(C4:C100="Activo",1,1000),FILA(A1:A97))),1),"")
¡Intenta agregar nuevos valores a la lista o cambiar los ya existentes y verás lo bien que la fórmula hace su trabajo!
Marlon (sábado, 14 marzo 2020 15:11)
Woow.. Es algo que no había visto antes en Excel..