Táboa de contidos
Hoxe analizaremos a sintaxe e os usos típicos da nova función SORTBY de matriz dinámica. Aprenderá a ordenar de forma personalizada en Excel cunha fórmula, a ordenar aleatoriamente unha lista, a organizar as celas segundo a lonxitude do texto e moito máis.
Microsoft Excel ofrece varias formas de ordenar os datos de texto por orde alfabética, datas. cronoloxicamente, e números de menor a maior ou de maior a menor. Tamén hai unha forma de ordenar polas túas propias listas personalizadas. Ademais da funcionalidade de ordenación convencional, Excel 365 presenta unha nova forma de ordenar datos con fórmulas: moi cómodo e incriblemente sinxelo de usar!
Función de clasificación de Excel
A función SORTBY en Excel está deseñada para ordenar un rango ou matriz en función dos valores doutro rango ou matriz. A clasificación pódese facer por unha ou varias columnas.
SORTBY é unha das seis novas funcións de matriz dinámica dispoñibles en Excel para Microsoft 365 e Excel 2021. O seu resultado é unha matriz dinámica que se derrama ás celas veciñas e que se actualiza automaticamente cando os datos de orixe cambian.
A función SORTBY ten un número variable de argumentos: os dous primeiros son obrigatorios e os outros son opcionais:
SORTBY(matriz, por_matriz1, [ordenar_orde1], [por_matriz2, ordenar_2] ,…)Matriz (obrigatorio): o intervalo de celas ou matriz de valores que se van ordenar.
Por_matriz1 (obrigatorio) - o intervalo ou matriz ordenarpor.
Orden_ordenar1 (opcional) - a orde de ordenación:
- 1 ou omitida (predeterminada) - ascendente
- -1 - descendente
By_array2 / Sort_order2 , … (opcional) - pares de matriz/orde adicional para usar para ordenar.
Nota importante! Actualmente, a función SORTBY só está dispoñible con subscricións de Microsoft 365 e Excel 2021. En Excel 2019, Excel =SORTBY(A2:B10, B2:B10, -1)
e versións anteriores a función SORTBY non está dispoñible.
Función SORTBY: 4 cousas para recordar
Para que unha fórmula SORTBY de Excel funcione correctamente, hai que ter en conta algúns puntos importantes:
- Os argumentos By_array deben ter unha fila de alto ou unha columna de ancho.
- O matriz e todos os argumentos by_array deben ter dimensións compatibles. Por exemplo, ao ordenar por dúas columnas, matriz , por_matriz1 e por_matriz2 deberían ter o mesmo número de filas; se non, producirase un erro #VALUE.
- Se a matriz devolta por SORTBY é o resultado final (saída nunha cela e non se pasa a outra función), Excel crea un intervalo de derrame dinámico e enchégao cos resultados. Polo tanto, asegúrate de ter suficientes celas baleiras cara abaixo e/ou á dereita da cela onde introduces a fórmula, se non, obterás un erro #SPILL.
- Os resultados das fórmulas SORTBY actualízanse automaticamente sempre que cambios de datos de orixe. Non obstante, novas entradas que se engaden fóra dea matriz á que se fai referencia na fórmula non se inclúe nos resultados a non ser que actualice a referencia matriz . Para que a matriz referenciada se expanda automaticamente, converte o intervalo de orixe nunha táboa de Excel ou cree un intervalo de nome dinámico.
Fórmula SORTBY básica en Excel
Aquí está un escenario típico de uso dun Fórmula SORTBY en Excel:
Supoño que tes unha lista de proxectos co campo Valor . Quere ordenar os proxectos polo seu valor nunha folla separada. Como outros usuarios non precisan ver os números, prefire non incluír a columna Valor nos resultados.
A tarefa pódese realizar facilmente coa función SORTBY, para a que proporcione os seguintes argumentos:
- Matriz é A2:A10 - xa que non desexa que a columna Valor se mostre nos resultados, déixaa fóra da matriz.
- Por_matriz1 é B2:B10 - ordenar por Valor .
- Orden_ordenar1 é -1 - descendente, é dicir, de maior a menor.
Xuntando os argumentos, obtemos esta fórmula:
=SORTBY(A2:B10, B2:B10, -1)
Para simplificar, usamos a fórmula no mesmo folla: insírela en D2 e prema a tecla Intro. Os resultados "verteranse" automaticamente a tantas celas como sexa necesario (D2:D10 no noso caso). Pero tecnicamente, a fórmula só está na primeira cela e eliminala de D2 eliminará todos os resultados.
Cando se usa noutra folla, a fórmula toma oseguinte forma:
=SORTBY(Sheet1!A2:A10, Sheet1!B2:B10, -1)
Onde Folla1 é a folla de traballo que contén os datos orixinais.
Uso da función SORTBY en Excel - exemplos de fórmulas
A continuación atoparás algúns exemplos máis de uso de SORTBY, que se espera que resulten útiles e perspicaces.
Ordenar por varias columnas
A fórmula básica descrita anteriormente ordena os datos por unha columna. Pero que pasa se precisas engadir un nivel máis de ordenación?
Supoñendo que a nosa táboa de mostra teña dous campos, Estado (columna B) e Valor (columna C) , queremos ordenar primeiro por Estado alfabeticamente e despois por Valor descendente.
Para ordenar por dúas columnas, só engadimos un par máis de <1 Argumentos>by_array / sort_order :
- Matriz é A2:C10; esta vez, queremos incluír as tres columnas nos resultados.
- Por_matriz1 é B2:B10 - primeiro, ordenar por Estado .
- Orden_ordenar1 é 1 - ordenar alfabéticamente desde A a Z.
- Por_matriz2 é C2:C10 - entón, ordena por Valor .
- Orden_ordenar2 é -1 - ordenar de maior a menor.
Como resultado, obtemos a seguinte fórmula:
=SORTBY(A2:B10, B2:B10, 1, C2:C10, -1)
Que reordena os nosos datos exactamente como lle indicamos:
Ordenación personalizada en Excel cunha fórmula
Para ordenar os datos nunha orde personalizada, pode usar a función de Ordenación personalizada de Excel ou crear unha fórmula ORDENAR COINCIDENCIA deste xeito:
ORDENAR(matriz,COINCIDIR( rango_para_ordenar , lista_personalizada , 0))Con unha ollada máis atenta ao noso conxunto de datos, probablemente che resulte máis conveniente ordenar os proxectos polo seu estado "loxicamente" , p.ex. por importancia, en lugar de por orden alfabético.
Para facelo, primeiro creamos unha lista personalizada na orde de ordenación desexada ( En curso , Completado , En espera ) tecleando cada valor nunha cela separada no intervalo E2:E4.
E despois, usando a fórmula xenérica anterior, fornecemos o intervalo de orixe para matriz (A2 :C10), a columna Estado para rango_para_ordenar (B2:B10) e a lista personalizada que creamos para lista_personalizada (E2:E4).
=SORTBY(A2:C10, MATCH(B2:B10, E2:E4, 0))
Como resultado, temos os proxectos ordenados polo seu estado exactamente como é necesario:
Para ordenar por lista personalizada na orde inversa, pon -1 para o Argumento sort_order1 :
=SORTBY(A2:C10, MATCH(B2:B10, E2:E4, 0), -1)
E terás os proxectos ordenados na dirección oposta:
Queres ordenar ademais os rexistros dentro de cada estado? Sen problema. Simplemente, engade un nivel de ordenación máis á fórmula, digamos por Valor (C2:C10) e defina a orde de ordenación desexada, ascendente no noso caso:
=SORTBY(A2:C10, MATCH(B2:B10, E2:E5, 0), 1, C2:C10, 1)
Unha gran vantaxe da fórmula SORTBY fronte á función de clasificación personalizada de Excel é que a fórmula actualízase automaticamente sempre que cambian os datos orixinais, mentres que a función require limpalo e reordenar con cada cambio.
Como esta fórmulaobras:
Como xa se mencionou, a función SORTBY de Excel só pode procesar matrices "ordenar por" cuxas dimensións sexan compatibles coa matriz de orixe. Como a nosa matriz de orixe (C2:C10) contén 9 filas e a lista personalizada (E2:E4) só 3 filas, non podemos proporcionala directamente ao argumento by_array . No seu lugar, usamos a función MATCH para crear unha matriz de 9 filas:
MATCH(B2:B10, E2:E5, 0)
Aquí usamos a columna Status (B2:B10) como valores de busca e nosa lista personalizada (E2:E5) como matriz de busca. O último argumento establécese en 0 para buscar coincidencias exactas. Como resultado, obtemos unha matriz de 9 números, cada un representando a posición relativa dun determinado valor Status na lista personalizada:
{1;3;2;1;3;2;2;1;2}
Esta matriz vai directamente ao argumento by_array da función SORTBY e obrígaa a colocar os datos na orde correspondente aos elementos da matriz, é dicir, primeiro as entradas representadas por 1, despois as entradas representadas por 2, etc.
Ordenación aleatoria en Excel cunha fórmula
En versións anteriores de Excel, pode facer unha ordenación aleatoria coa función RAND como se explica neste tutorial: Como ordenar aleatoriamente unha lista en Excel.
No novo Excel, pode usar unha función RANDARRAY máis potente xunto con SORTBY:
SORTBY( matriz , RANDARRAY(ROWS( matriz )))Onde matriz son os datos de orixe que quere mesturar.
Esta fórmula xenérica funciona para unha lista formada por uncolumna única así como para un intervalo de varias columnas.
Por exemplo, para ordenar aleatoriamente unha lista en A2:A10, use esta fórmula:
=SORTBY(A2:A10, RANDARRAY(ROWS(A2:A10)))
Para mesturar aleatoriamente datos en A2:C10 mantendo as filas xuntas, use este:
=SORTBY(A2:C10, RANDARRAY(ROWS(A2:C10)))
Como funciona esta fórmula:
A función RANDARRAY produce unha matriz de números aleatorios que se utilizarán para ordenar, e pásao no argumento by_array de SORTBY. Para especificar cantos números aleatorios xerar, conta o número de filas no intervalo de orixe mediante a función ROWS e "alimenta" ese número ao argumento filas de RANDARRAY. Iso é!
Nota. Como o seu predecesor, RANDARRAY é unha función volátil e xera unha nova matriz de números aleatorios cada vez que se recalcula a folla de cálculo. Como resultado, os teus datos recorreranse con cada cambio na folla. Para evitar o recurso automático, pode utilizar a función Pegar especial > Valores para substituír fórmulas polos seus valores.
Ordenar as celas pola lonxitude da cadea
Para ordenar as celas pola lonxitude das cadeas de texto que conteñen, use a función LEN para contar o número de caracteres de cada cela e fornece as lonxitudes calculadas ao argumento by_array de SORTBY. O argumento ordenar_orde pódese establecer como 1 ou -1, dependendo da orde preferida de ordenación.
Para ordenar por cadea de texto de menor a maior:
SORTBY(matriz, LEN(matriz), 1)Para ordenarcadea de texto de maior a menor:
SORTBY(matriz, LEN(matriz), -1)E aquí tes unha fórmula que demostra este enfoque en datos reais:
=SORTBY(A2:A7, LEN(A2:A7), 1)
Onde A2:A7 son as celas orixinais que desexa ordenar pola lonxitude do texto en orde ascendente:
CLASIFICAR vs. ORDENAR
No grupo de novas funcións de matriz dinámica de Excel, hai dúas deseñado para clasificar. A continuación enumeramos as diferenzas e semellanzas máis esenciais, así como cando é mellor empregar cada unha.
- A diferenza da función SORT, SORTBY non require que a matriz "ordenar por" forme parte da fonte. matriz, nin é necesario que apareza nos resultados. Entón, cando a túa tarefa é ordenar un rango baseado noutra matriz independente ou nunha lista personalizada, SORTBY é a función correcta para usar. Se estás buscando ordenar un intervalo en función dos seus propios valores, ORDENAR é máis apropiado.
- Ambas funcións admiten varios niveis de ordenación e ambas pódense encadear con outras matrices dinámicas e funcións convencionais.
- Ambas funcións só están dispoñibles para os usuarios de Excel 365 e Excel 2021.
A función SORTBY de Excel non funciona
No caso de que a súa fórmula SORTBY devolva un erro, o máis probable é que un dos seguintes motivos.
Argumentos by_array non válidos
Os argumentos by_array deben ser unha soa fila ou unha soa columna e son compatibles en tamaño coa matriz argumento. Por exemplo, se matriz ten 10filas, by_array tamén debería incluír 10 filas. En caso contrario, un #VALOR! ocorre un erro.
Argumentos de sorte_order non válidos
Os argumentos de sort_order só poden ser 1 (ascendente) ou -1 (descendente). Se non se define ningún valor, a orde predeterminada SORTBY é ascendente. Se se establece algún outro valor, un #VALOR! devólvese un erro.
Non hai espazo suficiente para os resultados
Como calquera outra función de matriz dinámica, SORTBY derrama os resultados nun intervalo redimensionable e actualizable automaticamente. Se non hai suficientes celas baleiras para mostrar todos os valores, un #SPILL! aparece un erro.
O libro de fontes está pechado
Se unha fórmula SORTBY fai referencia a outro ficheiro de Excel, ambos os libros deben estar abertos. Se o caderno de orixe está pechado, un #REF! ocorre un erro.
A súa versión de Excel non admite matrices dinámicas
Cando se usa nunha versión predinámica de Excel, a función ORDENAR devolve un #NAME? erro.
Así é como usar a función SORTBY en Excel para facer unha clasificación personalizada e outras cousas. Grazas por ler e espero verte no noso blog a vindeira semana!
Práctica para descargar
Fórmulas de Excel SORTBY (ficheiro .xlsx)