miércoles, 26 de agosto de 2015

Ordenar con Fórmulas en Base a dos Criterios

"Mi pregunta es la siguiente ¿Cómo solucionar el ordenar con fórmulas una lista con cifras repetidas utilizando una segunda variable? En el ejemplo que nos muestras en Ordenar Automáticamente una Lista con Valores Repetidos me interesa ordenar los casos repetidos teniendo en cuenta el número de empleados de cada zona. Es decir, que quede por delante, en caso de iguales ventas, la zona que menos empleados tenga".

Empecemos recordando el ejemplo en cuestión y añadiéndole, de paso, la columna de número de empleados:
Como se puede comprobar, hay zonas que obtienen idéntica cifra de ventas, como por ejemplo Galicia, Asturias y Madrid o Aragón y País Vasco, etcétera. En el post Ordenar Automáticamente una Lista con Valores Repetidos resolvimos la cuestión de ordenar automáticamente (con fórmulas) esta lista y, por otro lado, resolvimos el problema de encontrarnos con valores repetidos. En este caso lo que buscamos es ordenar por medio de fórmulas esta lista pero en base no a uno si no a dos criterios. Es decir, que primero ordene las zonas en base a la cifra de ventas y que en aquellos casos en los que haya empate sea el número de empleados el criterio a seguir para establecer el orden.
Lo primero que hacemos es crear una columna para realizar un proceso intermedio, a la que llamaremos Proceso1:
La fórmula que he escrito en la celda G3 y que después he copiado hasta G14 es:
=D3+1-(E3/10000)
Lo que hago es sumar a la cifra de ventas el número de empleados pero "ponderándolo". Al dividir la cifra de empleados por un número lo suficientemente grande lo que conseguimos es que al sumárselo a la cifra de ventas no altere la parte entera de dicho número (por lo que la cifra de ventas será el primer elemento de orden) pero pueda establecer una jerarquía con los decimales. El problema aquí es que queremos que aparezca primero la zona con más ventas PERO con MENOS empleados. Para conseguir esto lo que hacemos es restarle a 1 el resultado del cociente que acabo de explicar, o lo que es lo mismo:
1-(E3/10000). Con esta expresión no alteramos la parte entera de las ventas y conseguimos establecer un orden de menor a mayor con los decimales. Así las cosas, aplicamos ahora la función JERARQUIA: En la celda I3 escribimos la fórmula:
=JERARQUIA(G3;$G$3:$G$14)   y la copiamos hasta la celda I14:
Procedemos ahora a identificar cada una de estas cifras con la zona en cuestión. Para ello preparamos la siguiente salida de datos:
Nos situamos en la celda C18 y escribimos:
=INDICE($C$3:$C$14;COINCIDIR($B18;$I$3:$I$14;0))   y copiamos hasta C29:
En D18 escribimos:
=BUSCARV($C18;$C$3:$E$14;2;FALSO)   y copiamos hasta D29.
En E18 escribimos:
=BUSCARV($C18;$C$3:$E$14;3;FALSO)   y copiamos hasta E29:
Problema resuelto!