Dada una consulta muy interesante que recibí vía mail, surgió primero la idea de levantar este post, para crear un "precedente" sobre el tema que trataré en mi siguiente entrada, el cual es mucho mas complejo.
Practicamente todos los usuarios de Excel sabemos sobre las bondades de la herramienta "Datos / Ordenar", la cual nos permite ordenar una serie de datos en forma ascendente o descendente.
La cuestión es la siguiente: como mantener un rango continuamente ordenado, sin la utilización de la herramienta antes mencionada. Y se puede, con simples funciones.
este es el clasico comando, el cual seguro utilizamos miles de veces.
Ahora bien, por comodidad o por que nuestro proyecto así lo requiera (y especialmente en función de lograr mas practicidad en la tarea de los futuros usuarios), mas de una vez nos encontraremos con la necesidad de mantener una determinada lista siempre ordenada. Y es muy fácil conseguirlo... veamos:
[+/-] Ver el resto / Ocultar
1) Ordenamiento automático de numeros:
Aquí utilizaremos la función =K.ESIMO.MENOR(matriz, k) o =KESIMO.MAYOR(matriz, k), para que sea ascendente o descendente, respectivamente.
No es una función muy conocida, en general. Observemos que nos dice Microsoft Excel sobre ella:
"
Devuelve el k-ésimo menor valor de un conjunto de datos. Utilice esta función para devolver valores con una posición relativa específica dentro de un conjunto de datos." A pesar de ser un fanático absoluto de los productos de
mi querido Bill... la ayuda siempre me deja un "
sabor a poco".
En criollo y con una imagen:
el primer argumento es siempre la matriz de datos (primer columna). Ahora vean el segundo argumento: en la primer funcion es 2 .. y me devuelve 15 ¿por que? por que 15 es el segundo menor valor de la lista. Y si el argumento es 1 me devuelve 10, por que muestra así el primer valor mas bajo.
Y si es 3, el resultado es 20, ya que entre 10/15/20/25... 20 es el tercer valor mas pequeño.
Entonces, dado que K.ESIMO.MENOR() me jerarquiza un valor determinado dentro de una lista, puedo utilizarlo para ordenar. Para "jerarquizar" cada elemento de la matriz, utilizaré como segundo argumento la función FILA(), que irá incrementando en 1 cada vez que copie la función hacia abajo:
todos los datos de la columna A se encuentran ordenados en B. FILA() en la primer celda es igual a 1, en la segunda es igual a 2 y así sucesivamente. De allí obtengo a k, el segundo argumento.
Muestro otra imagen, modificando algunos números, para que vean como automaticamente quedan ordenados:
listo.
Si quisiéramos un orden descendente, hacemos uso de K.ESIMO.MAYOR():
listo.
2) Ordenamiento automático de caracteres:
Las K.ESIMO funcionan solo con números. Si intentáramos jerarquizar una lista de nombres, obtendríamos error:
no anda.
Lograremos este objetivo haciendo uso de una columna auxiliar... y por picardía y para no complicar las cosas, los datos referentes al ordenamiento irán a la izquierda de los nombres. Miren:
CONTAR.SI() tiene dos argumentos: el rango y el criterio que aplicaremos para contar. El primero es la lista de nombres, en el segundo le estoy diciendo que cuente los valores menores o iguales a una celda específica. ¿Cuantos valores menores o iguales a C1 (carlos) hay en la matriz? Exacto, tres. ¿Y cuantos valores hay menores o iguales a C6 (abel)? Exacto, uno. ¿Se entiende la lógica?
Tengo a la izquierda la posición que ocuparía cada elemento en una matriz ordenada. Para finalizar esta tarea pondremos en D1:
{=BUSCARV(K.ESIMO.MENOR($B$1:$B$6;FILA());$B$1:$C$6;2;0)}
Como primer argumento de BUSCARV() paso la lista numérica ordenada, usando K.ESIMO.MENOR(), el segundo es la tabla, el tercero la columna a devolver y el cuarto (como digo siempre "por las dudas") en falso, o sea = 0. Noten que la funcion tiene dos llaves {}, así que es matricial... no olviden presionar "ctrol + may + entrar" al momento de ingresarla.
Para lograr:
listo.
Para poner a prueba el trabajo, cambiamos algunos nombres y repetimos otros:
sigue funcionando.
Dudas o consultas... tienen las entradas o mi correo, con gusto les responderé.
Suerte.
olvidé algo: si hablamos de ordenamiento numérico, las funciones se comportan de igual forma al utilizar fechas, es decir, las podemos ordenar sin problemas.
ResponderEliminar