Función Excel SORTBY - ordenación personalizada con fórmula

  • Compartir Este
Michael Brown

Hoy veremos de cerca la sintaxis y los usos típicos de la nueva función de ordenación dinámica SORTBY. Aprenderá cómo ordenar de forma personalizada en Excel con una fórmula, ordenar aleatoriamente una lista, ordenar celdas por longitud de texto y mucho más.

Microsoft Excel ofrece varias formas de ordenar los datos de texto alfabéticamente, las fechas cronológicamente y los números de menor a mayor o de mayor a menor. También hay una forma de ordenar por sus propias listas personalizadas. Además de la funcionalidad convencional de Ordenar, Excel 365 introduce una forma totalmente nueva de ordenar los datos con fórmulas: ¡muy práctica e increíblemente fácil de usar!

    Función SORTBY de Excel

    La función SORTBY de Excel está diseñada para ordenar un rango o matriz basándose en los valores de otro rango o matriz. La ordenación puede realizarse por una o varias columnas.

    SORTBY es una de las seis nuevas funciones de matriz dinámica disponibles en Excel para Microsoft 365 y Excel 2021. Su resultado es una matriz dinámica que se extiende a las celdas vecinas y se actualiza automáticamente cuando cambian los datos de origen.

    La función SORTBY tiene un número variable de argumentos: los dos primeros son obligatorios y los demás opcionales:

    SORTBY(array, by_array1, [sort_order1], [by_array2, sort_order2],...)

    Matriz (requerido) - el rango de celdas o array de valores a ordenar.

    Por_array1 (requerido) - el rango o array por el que ordenar.

    Orden_de_clasificación1 (opcional) - el orden de clasificación:

    • 1 u omitido (por defecto) - ascendente
    • -1 - descendente

    Por_array2 / Orden_de_clasificación2 ... (opcional) - matrices adicionales / pares de órdenes a utilizar para la ordenación.

    Nota importante! Actualmente la función SORTBY solo está disponible con suscripciones a Microsoft 365 y Excel 2021. En Excel 2019, Excel 2016 y versiones anteriores la función SORTBY no está disponible.

    Función SORTBY - 4 cosas que hay que recordar

    Para que una fórmula SORTBY de Excel funcione correctamente, hay que tener en cuenta algunos puntos importantes:

    • Por_array Los argumentos deben tener una fila de alto o una columna de ancho.
    • En matriz y todos by_array deben tener dimensiones compatibles. Por ejemplo, al ordenar por dos columnas, matriz , by_array1 y by_array2 deben tener el mismo número de filas; de lo contrario, se producirá un error #VALOR.
    • Si la matriz devuelta por SORTBY es el resultado final (salida en una celda y no pasada a otra función), Excel crea un rango de derrame dinámico y lo rellena con los resultados. Por lo tanto, asegúrese de tener suficientes celdas vacías abajo y/o a la derecha de la celda donde introduce la fórmula, de lo contrario obtendrá un error #SPILL.
    • Los resultados de las fórmulas SORTBY se actualizan automáticamente cada vez que cambian los datos de origen. Sin embargo, las nuevas entradas que se añaden fuera de la matriz a la que se hace referencia en la fórmula no se incluyen en los resultados a menos que se actualice la variable matriz Para que la matriz referenciada se expanda automáticamente, convierta el rango de origen en una tabla de Excel o cree un rango dinámico con nombre.

    Fórmula básica SORTBY en Excel

    A continuación se muestra un escenario típico de uso de una fórmula SORTBY en Excel:

    Supongamos que tiene una lista de proyectos con la etiqueta Valor Desea ordenar los proyectos por su valor en una hoja aparte. Como otros usuarios no necesitan ver los números, prefiere no incluir el campo Valor en los resultados.

    La tarea puede realizarse fácilmente con la función SORTBY, para la que se suministran los siguientes argumentos:

    • Matriz es A2:A10 - ya que no desea que el Valor que se mostrará en los resultados, la dejas fuera de la matriz.
    • Por_array1 es B2:B10 - ordenar por Valor .
    • Orden_de_clasificación1 es -1 - descendente, es decir, de mayor a menor.

    Uniendo los argumentos, obtenemos esta fórmula:

    =SORTBY(A2:B10, B2:B10, -1)

    Para simplificar, utilizamos la fórmula en la misma hoja: la introducimos en D2 y pulsamos la tecla Intro. Los resultados se "derraman" automáticamente a tantas celdas como sea necesario (D2:D10 en nuestro caso). Pero técnicamente, la fórmula sólo está en la primera celda, y al borrarla de D2 se borrarán todos los resultados.

    Cuando se utiliza en otra hoja, la fórmula adopta la siguiente forma:

    =SORTBY(Hoja1!A2:A10, Hoja1!B2:B10, -1)

    Dónde Hoja1 es la hoja de cálculo que contiene los datos originales.

    Uso de la función SORTBY en Excel - ejemplos de fórmulas

    A continuación encontrará algunos ejemplos más de utilización de SORTBY, que esperamos le resulten útiles y reveladores.

    Ordenar por varias columnas

    La fórmula básica descrita anteriormente ordena los datos por una columna, pero ¿qué ocurre si necesitas añadir un nivel más de ordenación?

    Suponiendo que nuestra tabla de ejemplo tenga dos campos, Estado (columna B) y Valor (columna C) queremos ordenar primero por Estado alfabéticamente, y después por Valor descendente.

    Para ordenar por dos columnas, sólo tenemos que añadir un par más de las etiquetas by_array / ordenar argumentos:

    • Matriz es A2:C10 - esta vez, queremos incluir las tres columnas en los resultados.
    • Por_array1 es B2:B10 - primero, ordenar por Estado .
    • Orden_de_clasificación1 es 1 - ordenar alfabéticamente de la A a la Z.
    • Por_array2 es C2:C10 - entonces, ordena por Valor .
    • Orden_de_clasificación2 es -1 - ordena de mayor a menor.

    Como resultado, obtenemos la siguiente fórmula:

    =SORTBY(A2:B10, B2:B10, 1, C2:C10, -1)

    Lo que reordena nuestros datos exactamente como lo instruimos:

    Ordenación personalizada en Excel con una fórmula

    Para ordenar los datos en un orden personalizado, puedes utilizar la función de Ordenación Personalizada de Excel o construir una fórmula SORTBY MATCH de esta forma:

    SORTBY(array, MATCH( rango_para_clasificar , lista_personalizada , 0))

    Si examina detenidamente nuestro conjunto de datos, probablemente le resulte más cómodo ordenar los proyectos por su estado de forma "lógica", por ejemplo, por importancia, en lugar de por orden alfabético.

    Para ello, primero creamos una lista personalizada en el orden de clasificación deseado ( En curso , Completado , En espera ) escribiendo cada valor en una celda separada en el rango E2:E4.

    Y a continuación, utilizando la fórmula genérica anterior, suministramos la gama de fuentes para matriz (A2:C10), el Estado columna para rango_para_clasificar (B2:B10), y la lista personalizada que creamos para lista_personalizada (E2:E4).

    =SORTBY(A2:C10, MATCH(B2:B10, E2:E4, 0))

    Como resultado, tenemos los proyectos ordenados por su estado exactamente como se necesita:

    Para ordenar por lista personalizada en orden inverso, ponga -1 en el campo orden_clasificacion1 argumento:

    =SORTBY(A2:C10, MATCH(B2:B10, E2:E4, 0), -1)

    Y tendrás los proyectos ordenados en sentido contrario:

    Si además desea ordenar los registros dentro de cada estado, no hay problema: añada otro nivel de ordenación a la fórmula, por ejemplo, por Valor (C2:C10), y defina el orden de clasificación deseado, ascendente en nuestro caso:

    =SORTBY(A2:C10, MATCH(B2:B10, E2:E5, 0), 1, C2:C10, 1)

    Una gran ventaja de la fórmula SORTBY sobre la función de ordenación personalizada de Excel es que la fórmula se actualiza automáticamente cada vez que cambian los datos originales, mientras que la función requiere limpiar y volver a ordenar con cada cambio.

    Cómo funciona esta fórmula:

    Como ya se ha mencionado, la función SORTBY de Excel sólo puede procesar matrices "ordenar por" cuyas dimensiones sean compatibles con la matriz de origen. Como nuestra matriz de origen (C2:C10) contiene 9 filas y la lista personalizada (E2:E4) sólo 3 filas, no podemos suministrarla directamente a la función by_array En su lugar, utilizamos la función MATCH para crear una matriz de 9 filas:

    MATCH(B2:B10, E2:E5, 0)

    En este caso, utilizamos el Estado (B2:B10) como valores de búsqueda y nuestra lista personalizada (E2:E5) como matriz de búsqueda. El último argumento se establece en 0 para buscar coincidencias exactas. Como resultado, obtenemos una matriz de 9 números, cada uno de los cuales representa la posición relativa de una determinada columna Estado en la lista personalizada:

    {1;3;2;1;3;2;2;1;2}

    Esta matriz va directamente al by_array de la función SORTBY y le obliga a colocar los datos en el orden correspondiente a los elementos de la matriz, es decir, primero las entradas representadas por 1's, luego las entradas representadas por 2's, y así sucesivamente.

    Ordenar aleatoriamente en Excel con una fórmula

    En versiones anteriores de Excel, puedes hacer una ordenación aleatoria con la función RAND como se explica en este tutorial: Cómo ordenar aleatoriamente una lista en Excel.

    En el nuevo Excel, puede utilizar una función RANDARRAY más potente junto con SORTBY:

    SORTBY( matriz RANDARRAY(FILAS( matriz )))

    Dónde matriz son los datos de origen que desea barajar.

    Esta fórmula genérica funciona tanto para una lista formada por una sola columna como para un rango de varias columnas.

    Por ejemplo, para ordenar aleatoriamente una lista en A2:A10, utilice esta fórmula:

    =SORTBY(A2:A10, RANDARRAY(ROWS(A2:A10)))

    Para barajar los datos en A2:C10 manteniendo las filas juntas, utilice este:

    =SORTBY(A2:C10, RANDARRAY(ROWS(A2:C10)))

    Cómo funciona esta fórmula:

    La función RANDARRAY produce una matriz de números aleatorios que se utilizarán para la ordenación, y que se pasan en el campo by_array de SORTBY. Para especificar cuántos números aleatorios generar, se cuenta el número de filas en el rango fuente utilizando la función FILAS, y se "alimenta" ese número al argumento filas argumento de RANDARRAY. ¡Eso es!

    Nota. Al igual que su predecesora, RANDARRAY es una función volátil y genera una nueva matriz de números aleatorios cada vez que se recalcula la hoja de cálculo. Como resultado, sus datos se reordenarán con cada cambio en la hoja. Para evitar la reordenación automática, puede utilizar la función Pegado especial > Valores para sustituir las fórmulas por sus valores.

    Ordenar celdas por longitud de cadena

    Para ordenar las celdas por la longitud de las cadenas de texto que contienen, utilice la función LEN para contar el número de caracteres de cada celda y suministre las longitudes calculadas a la función by_array argumento de SORTBY. El ordenar se puede establecer en 1 o -1, dependiendo del orden de clasificación preferido.

    Para ordenar por cadena de texto de menor a mayor:

    SORTBY(array, LEN(array), 1)

    Para ordenar por cadena de texto de mayor a menor:

    SORTBY(array, LEN(array), -1)

    Y aquí tienes una fórmula que demuestra este enfoque con datos reales:

    =SORTBY(A2:A7, LEN(A2:A7), 1)

    Donde A2:A7 son las celdas originales que desea ordenar por longitud de texto en orden ascendente:

    SORTBY vs. SORT

    En el grupo de nuevas funciones de matriz dinámica de Excel, hay dos diseñadas para ordenar. A continuación enumeramos las diferencias y similitudes más esenciales, así como cuándo es mejor utilizar cada una.

    • A diferencia de la función SORT, SORTBY no requiere que la matriz "ordenar por" forme parte de la matriz de origen, ni es necesario que aparezca en los resultados. Por lo tanto, cuando su tarea consiste en ordenar un rango basándose en otra matriz independiente o en una lista personalizada, SORTBY es la función adecuada. Si lo que desea es ordenar un rango basándose en sus propios valores, entonces SORT es más adecuada.
    • Ambas funciones admiten varios niveles de ordenación y pueden encadenarse con otras funciones de matriz dinámica y convencionales.
    • Ambas funciones solo están disponibles para los usuarios de Excel 365 y Excel 2021.

    La función SORTBY de Excel no funciona

    En caso de que su fórmula SORTBY devuelva un error, lo más probable es que se deba a una de las siguientes razones.

    Argumentos by_array no válidos

    En by_array deben ser de una sola fila o una sola columna y de tamaño compatible con el del fichero matriz Por ejemplo, si matriz tiene 10 filas, by_array también debe incluir 10 filas. De lo contrario, se produce un error #¡VALOR!

    Argumentos sort_order no válidos

    En ordenar sólo pueden ser 1 (ascendente) o -1 (descendente). Si no se establece ningún valor, SORTBY adopta por defecto el orden ascendente. Si se establece cualquier otro valor, se devuelve un error #¡VALOR!

    No hay espacio suficiente para los resultados

    Como cualquier otra función de matriz dinámica, SORTBY vierte los resultados en un rango automáticamente redimensionable y actualizable. Si no hay suficientes celdas vacías para mostrar todos los valores, se lanza un error #SPILL!

    El libro de origen está cerrado

    Si una fórmula SORTBY hace referencia a otro archivo de Excel, ambos libros deben estar abiertos. Si el libro de origen está cerrado, se produce un error #REF!

    Su versión de Excel no admite matrices dinámicas

    Cuando se utiliza en una versión pre-dinámica de Excel, la función SORT devuelve un error #NAME?

    Así es como se utiliza la función SORTBY en Excel para hacer ordenaciones personalizadas y otras cosas. Te doy las gracias por leer y ¡espero verte en nuestro blog la semana que viene!

    Cuaderno de prácticas para descargar

    Fórmulas SORTBY de Excel (archivo .xlsx)

    Michael Brown es un entusiasta de la tecnología dedicado y apasionado por simplificar procesos complejos utilizando herramientas de software. Con más de una década de experiencia en la industria de la tecnología, ha perfeccionado sus habilidades en Microsoft Excel y Outlook, así como en Google Sheets y Docs. El blog de Michael está dedicado a compartir su conocimiento y experiencia con otros, brindando consejos y tutoriales fáciles de seguir para mejorar la productividad y la eficiencia. Ya sea un profesional experimentado o un principiante, el blog de Michael ofrece información valiosa y consejos prácticos para aprovechar al máximo estas herramientas de software esenciales.