Функция SORT на Excel - автоматично сортиране на данни с помощта на формула

  • Споделя Това
Michael Brown

Урокът показва как да използвате функцията SORT за динамично сортиране на масиви с данни. Ще научите формула за сортиране по азбучен ред в Excel, подреждане на числата във възходящ или низходящ ред, сортиране по няколко колони и др.

Функцията "Сортиране" съществува от дълго време. Но с въвеждането на динамичните масиви в Excel 365 се появи невероятно прост начин за сортиране с формули. Хубавото на този метод е, че резултатите се актуализират автоматично при промяна на изходните данни.

    Функция SORT на Excel

    Функцията SORT в Excel подрежда съдържанието на масив или диапазон по колони или редове във възходящ или низходящ ред.

    SORT принадлежи към групата на функциите за динамични масиви. Резултатът е динамичен масив, който автоматично се разлива в съседните клетки по вертикала или хоризонтала в зависимост от формата на изходния масив.

    Синтаксисът на функцията SORT е следният:

    SORT(масив, [sort_index], [sort_order], [by_col])

    Къде:

    Масив (задължително) - представлява масив от стойности или диапазон от клетки за сортиране. Това могат да бъдат всякакви стойности, включително текст, числа, дати, времена и т.н.

    Sort_index (незадължително) - цяло число, което указва по коя колона или ред да се сортира. Ако се пропусне, по подразбиране се използва индекс 1.

    Sort_order (по избор) - определя реда на сортиране:

    • 1 или пропуснато (по подразбиране) - възходящ ред, т.е. от най-малкия към най-големия
    • -1 - низходящ ред, т.е. от най-големия към най-малкия

    By_col (по избор) - логическа стойност, която указва посоката на сортиране:

    • FALSE или пропуснато (по подразбиране) - сортиране по ред. Ще използвате тази опция през повечето време.
    • TRUE - сортиране по колона. Използвайте тази опция, ако данните ви са организирани хоризонтално в колони, както в този пример.

    Функция SORT на Excel - съвети и бележки

    SORT е нова динамична функция за масиви и като такава има няколко особености, които трябва да знаете:

    • Понастоящем функцията SORT е налична само в Microsoft 365 и Excel 2021. Excel 2019, Excel 2016 не поддържат формули за динамични масиви, така че функцията SORT не е налична в тези версии.
    • Ако масивът, върнат от формулата SORT, е крайният резултат (т.е. не е предаден на друга функция), Excel динамично създава диапазон с подходящ размер и го попълва със сортираните стойности. Затова се уверете, че винаги имате достатъчно празни клетки надолу и/или вдясно от клетката, в която въвеждате формулата, в противен случай се получава грешка #SPILL.
    • Резултатите се актуализират динамично при промяна на изходните данни. масив не се разширява автоматично, за да включва нови записи, добавени извън препратената формула. масив За да включите такива елементи, трябва да актуализирате масив във формулата си, или преобразувайте изходния диапазон в таблица, както е показано в този пример, или създайте динамичен именуван диапазон.

    Основна формула SORT на Excel

    Този пример показва основна формула за сортиране на данни в Excel във възходящ и низходящ ред.

    Да предположим, че данните ви са подредени по азбучен ред, както е показано на екранната снимка по-долу. Търсите да сортирате числата в колона B, без да прекъсвате или смесвате данните.

    Формула за сортиране във възходящ ред

    За да подредите стойностите в колона В от най-малката към най-голямата, използвайте следната формула:

    =SORT(A2:B8, 2, 1)

    Къде:

    • A2:B8 е изходният масив
    • 2 е номерът на колоната, по която ще сортирате
    • 1 е възходящият ред на сортиране

    Тъй като нашите данни са организирани в редове, последният аргумент може да бъде пропуснат, за да се зададе по подразбиране FALSE - сортиране по редове.

    Просто въведете формулата в която и да е празна клетка (в нашия случай D2), натиснете Enter и резултатите ще се прелеят автоматично в D2:E8.

    Формула за сортиране в низходящ ред

    За да сортирате данните в низходящ ред, т.е. от най-големия към най-малкия, задайте sort_order на -1 по следния начин:

    =SORT(A2:B8, 2, -1)

    Въведете формулата в горната лява клетка на целевия диапазон и ще получите този резултат:

    По подобен начин можете да сортирате текстовите стойности по азбучен ред от A до Z или от Z до A.

    Как да сортирате данни в Excel с помощта на формула

    Примерите по-долу показват няколко типични употреби на функцията SORT в Excel и няколко нетривиални.

    Сортиране на Excel по колона

    Когато сортирате данни в Excel, в повечето случаи променяте реда на редовете. Но когато данните са организирани хоризонтално с редове, съдържащи етикети, и колони, съдържащи записи, може да се наложи да сортирате отляво надясно, а не отгоре надолу.

    За да сортирате по колона в Excel, задайте by_col на TRUE. В този случай, sort_index ще представлява ред, а не колона.

    Например, за да подредите данните по-долу по Qty. от най-голям към най-малък брой, използвайте тази формула:

    =SORT(B1:H2, 2, 1, TRUE)

    Къде:

    • B1:H2 са изходните данни за сортиране
    • 2 е индексът на сортиране, тъй като сортираме числата на втория ред
    • -1 показва низходящия ред на сортиране
    • TRUE означава сортиране на колони, а не на редове

    Сортиране по няколко колони в различен ред (многостепенно сортиране)

    Когато работите със сложни модели на данни, често се налага да сортирате на няколко нива. Може ли това да стане с формула? Да, лесно е! Това, което трябва да направите, е да предоставите масивни константи за sort_index и sort_order аргументи.

    Например, за да сортирате данните по-долу първо по Регион (колона A) от A до Z, а след това чрез Количество . (колона В) от най-малкия до най-големия, задайте следните аргументи:

    • Масив са данните в A2:C13.
    • Sort_index е константата на масива {1,3}, тъй като първо сортираме по Регион (първа колона), а след това чрез Количество . (3-та колона).
    • Sort_order е константата на масива {1,-1}, тъй като 1-ва колона трябва да бъде сортирана във възходящ ред, а 3-та колона - в низходящ ред.
    • By_col се пропуска, защото сортираме редовете, което е по подразбиране.

    Като съберем аргументите, получаваме следната формула:

    =SORT(A2:C13, {1,3}, {1,-1})

    Текстовите стойности в първата колона са подредени по азбучен ред, а числата в третата колона - от най-голямото до най-малкото:

    Сортиране и филтриране в Excel

    Когато искате да филтрирате данните по някакъв критерий и да подредите резултатите, използвайте функциите SORT и FILTER заедно:

    SORT(FILTER(масив, criteria_range = критерии ), [sort_index], [sort_order], [by_col])

    Функцията FILTER получава масив от стойности въз основа на определените от вас критерии и предава този масив на първия аргумент на SORT.

    Най-хубавото на тази формула е, че тя извежда резултатите и като динамичен диапазон на разливане, без да се налага да натискате Ctrl + Shift + Enter или да гадаете в колко клетки да я копирате. Както обикновено, въвеждате формулата в най-горната клетка и натискате клавиша Enter.

    Като пример ще извлечем елементи с количество, равно или по-голямо от 30 (>=30), от изходните данни в A2:B9 и ще подредим резултатите във възходящ ред.

    За целта първо задаваме условието, например в клетка E2, както е показано на изображението по-долу. И след това изграждаме формулата SORT на Excel по този начин:

    =SORT(FILTER(A2:B9, B2:B9>=E2), 2)

    Освен масив генерирани от функцията FILTER, посочваме само sort_index Останалите два аргумента са пропуснати, тъй като по подразбиране работят точно както ни е необходимо (сортиране по ред, във възходящ ред).

    Получаване на N най-големи или най-малки стойности и сортиране на резултатите

    Когато анализирате огромни масиви от информация, често се налага да извлечете определен брой топ стойности. Може би не само да ги извлечете, но и да ги подредите в желания ред. И в идеалния случай да изберете кои колони да включите в резултатите. Звучи сложно? Не и с новите функции за динамични масиви!

    Ето една обща формула:

    ИНДЕКС(SORT(...), SEQUENCE( n ), { column1_to_return , column2_to_return , ...})

    Къде: n е броят на стойностите, които искате да върнете.

    Предположете, че от набора данни по-долу искате да получите списък с топ 3 въз основа на числата в колона В.

    За да го направите, първо подредете масива A2:C13 по третата колона в низходящ ред:

    SORT(A2:C13, 3, -1)

    И след това вложете горната формула в първата ( масив ) на функцията INDEX, за да бъде масивът подреден от най-големия към най-малкия.

    За втория ( row_num ), който указва колко реда да се върнат, генерирайте необходимите последователни числа, като използвате функцията SEQUENCE. Тъй като се нуждаем от 3 най-горни стойности, използваме SEQUENCE(3), което е същото като да предоставим константата на вертикалния масив {1;2;3} директно във формулата.

    За третия ( col_num ), който определя колко колони да се върнат, въведете номерата на колоните под формата на хоризонтална константа в масив. Искаме да върнем колони B и C, затова използваме масив {2,3}.

    В крайна сметка получаваме следната формула:

    =INDEX(SORT(A2:C13, 3, -1), SEQUENCE(3), {2,3})

    И това дава точно тези резултати, които искаме:

    Да се върнете 3 дъна просто подредете оригиналните данни от най-малката към най-голямата. За тази цел променете sort_order от -1 до 1:

    =INDEX(SORT(A2:C13, 3, 1), SEQUENCE(3), {2,3})

    Връщане на сортирана стойност в определена позиция

    Погледнато от друг ъгъл, какво ще стане, ако искате да върнете само определена позиция на сортиране? Да речем, само 1-ви , само 2-ри или само 3-ти запис от сортирания списък? За да го направите, използвайте опростената версия на формулата INDEX SORT, разгледана по-горе:

    INDEX(SORT(...), n , { column1_to_return , column2_to_return , ...})

    Къде: n е позицията, която представлява интерес.

    Например, за да получите определена позиция отгоре (т.е. от данните, подредени в низходящ ред), използвайте тази формула:

    =INDEX(SORT(A2:C13, 3, -1), F1, {2,3})

    За да получите конкретна позиция отдолу (т.е. от данните, подредени във възходящ ред), използвайте тази опция:

    =INDEX(SORT(A2:C13, 3, 1), I1, {2,3})

    Където A2:C13 са изходните данни, F1 е позицията отгоре, I1 е позицията отдолу, а {2,3} са колоните, които трябва да бъдат върнати.

    Използване на таблица на Excel за автоматично разширяване на масива за сортиране

    Както вече знаете, подреденият масив се актуализира автоматично, когато направите промени в изходните данни. Това е стандартното поведение на всички функции за динамични масиви, включително SORT. Когато обаче добавяте нови записи извън препратения масив, те не се включват автоматично във формулата. Ако искате формулата ви да реагира на такива промени, преобразувайте изходния диапазон в напълнофункционална таблица на Excel и използвайте структурирани препратки във формулата си.

    За да видите как работи на практика, разгледайте следния пример.

    Да предположим, че използвате следната формула SORT на Excel, за да подредите стойностите в диапазона A2:B8 в азбучен ред:

    =SORT(A2:B8, 1, 1)

    След това въвеждате нов запис в ред 9... и с разочарование виждате, че новодобавеният запис не е включен в диапазона за разливане:

    Сега преобразувайте изходния диапазон в таблица. За тази цел просто изберете диапазона, включително заглавията на колоните (A1:B8), и натиснете Ctrl + T . Когато съставяте формулата си, изберете изходния диапазон с помощта на мишката и името на таблицата ще бъде вмъкнато автоматично във формулата (това се нарича структурирана препратка):

    =SORT(Таблица1, 1, 1)

    Когато въведете нов запис точно под последния ред, таблицата ще се разшири автоматично и новите данни ще бъдат включени в диапазона на разливане на формулата SORT:

    Функцията SORT на Excel не работи

    Ако формулата ви SORT води до грешка, това най-вероятно се дължи на следните причини.

    #Името на грешката: по-стара версия на Excel

    SORT е нова функция и работи само в Excel 365 и Excel 2021. В по-старите версии, където тази функция не се поддържа, се появява грешка #NAME?.

    #SPILL грешка: нещо блокира обхвата на разливане

    Ако една или повече клетки в диапазона на разливане не са напълно празни или слети, се показва грешка #SPILL! За да я поправите, просто премахнете блокажа. За повече информация вижте Excel #SPILL! грешка - какво означава и как да я поправите.

    #VALUE грешка: невалидни аргументи

    Когато се сблъскате с грешка #VALUE!, проверете sort_index и sort_order аргументи. Sort_index не трябва да надвишава броя на колоните е масив , и sort_order трябва да бъде или 1 (възходящо), или -1 (низходящо).

    #REF грешка: работната книга източник е затворена

    Тъй като динамичните масиви имат ограничена поддръжка за препратки между работни книги, функцията SORT изисква и двата файла да са отворени. Ако изходната работна книга е затворена, формулата ще изхвърли грешка #REF! За да я поправите, просто отворете файла, към който има препратка.

    Това е начинът за сортиране на данни в Excel с помощта на формула. Благодаря ви, че прочетохте, и се надявам да се видим в нашия блог следващата седмица!

    Практическа работна тетрадка за изтегляне

    Сортиране в Excel с формули (.xlsx файл)

    Майкъл Браун е отдаден технологичен ентусиаст със страст към опростяване на сложни процеси с помощта на софтуерни инструменти. С повече от десетилетие опит в технологичната индустрия, той е усъвършенствал уменията си в Microsoft Excel и Outlook, както и в Google Sheets и Docs. Блогът на Майкъл е посветен на споделянето на неговите знания и опит с други, предоставяйки лесни за следване съвети и уроци за подобряване на продуктивността и ефективността. Независимо дали сте опитен професионалист или начинаещ, блогът на Michael предлага ценни прозрения и практически съвети за извличане на максимума от тези основни софтуерни инструменти.