Ordena una lista de datos, según criterios especificados.
Sintaxis
List.Sort(list as list, optional comparisonCriteria as any) as list
Vamos a ver algunos ejemplos, y, vemos sus argumentos.
Creamos una consulta en blanco.
Vamos a la barra de fórmulas, y, creamos una lista como sigue:
Después del signo igual ponemos List.Sort, el primer argumento es lista, pues, es la lista que hemos creado, de forma predeterminada, ordena de manera ascendente.
Los números han sido ordenados de menor a mayor.
El siguiente argumento es comparisonCriteria, donde podemos decidir el orden, si ponemos Order.Ascending, se ordenará de forma ascendente, que es la forma predeterminada, si ponemos Order.Descending, ordenara de manera descendente.
Después del primer argumento ponemos coma, y, Order.Descending.
= List.Sort({7,-3,4,5,14,2},Order.Descending)
Se ha ordenado los números de mayor a menor.
Si en vez de Order.Descending ponemos 1, obtenemos el mismo resultado.
= List.Sort({7,-3,4,5,14,2},1)
Si ponemos 0, se ordena de menor a mayor.
En el argumento comparisonCriteria podemos poner una funcion.
Agregamos un nuevo paso, usamos la funcion List.Sort, como argumento lista es el paso que aparece, como argumento comparisonCriteria, abrimos llaves, ponemos each, ponemos la funcion Number.IsEven, que devuelve VERDADERO si es par, y, FALSO si no lo es, abrimos paréntesis, como argumento number, ponemos guion bajo, que quiere decir todos los valores, cerramos llaves, cerramos paréntesis.
= List.Sort(Origen,{each Number.IsEven(_)})
Veamos la lista del paso Origen.
Los valores pares son 14, 4, y, 2, pues, estos son los valores que se van a ordenar de mayor a menor, e resto de valores quedaran como están.
Podíamos decir que hemos creado dos niveles.
A esta primera condición, vamos a agregar otra condición, para ello, antes de la primera llave, abrimos otra llave, después del cierre de llaves, ponemos coma, abrimos otra llave, la pregunta es la misma, pero, en vez de poner Number.IsEven, ponemos Number.IsOdd, es decir, si es impar, cerramos llaves.
Vamos a crear dos niveles, en el primer nivel, se van a ordenar los números impares de mayor a menor, y, en el segundo nivel, se van a ordenar los números pares de mayor a menor.
= List.Sort(Origen,{{each Number.IsEven(_)},{each Number.IsOdd(_)}})
Creamos otra consulta en blanco.
Creamos la siguiente lista.
Ordenamos.
= List.Sort({"A","a","B","b","C","c"})
Vemos que las letras mayúsculas se han ordenado primero, y, después, las letras minúsculas.
Esto es debido a que a cada carácter le corresponde un número, a la letra “A” le corresponde el numero 65, y, a la letra “a”, le corresponde el número 97, de ahí , la ordenación.
Para que la ordenación sea correcta, podemos usar la funcion Text.Lower, que convierte los caracteres a minúsculas.
Usamos el argumento comparisonCriteria, ponemos each, la funcion Text.Lower, como argumento texto, ponemos guion bajo.
= List.Sort({"A","a","B","b","C","c"}, each Text.Lower(_))
Aceptamos, y, ya lo tenemos.
Ahora, tengo cargado la tabla Ventas.
Queremos ordenar por la columna de total.
Agregamos un nuevo paso.
Después del signo igual ponemos Table.Sort, hemos cambiado List.Sort por Table.Sort, para que trabaje con una tabla, como argumento tabla es el paso que aparece, coma, abrimos llaves, entre comillas dobles ponemos Total, que es la columna por la que vamos a ordenar, coma, como argumento comparisonCriteria, ponemos Order.Descending.
= Table.Sort(#"Tipo cambiado",{"Total",Order.Descending})
Tenemos el modelo ordenado por la columna de total.
Miguel Angel Franco Garcia
Comments