Функция SORTBY на Excel - сортиране по избор с формула

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

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

Microsoft Excel предлага редица начини за подреждане на текстови данни по азбучен ред, на дати по хронологичен ред и на числа от най-малкото до най-голямото или от най-голямото до най-малкото. Има и начин за сортиране по собствени персонализирани списъци. В допълнение към традиционната функция за сортиране Excel 365 въвежда съвсем нов начин за сортиране на данни с формули - много удобен и невероятно лесен за използване!

    Функция SORTBY на Excel

    Функцията SORTBY в Excel е предназначена за сортиране на един диапазон или масив въз основа на стойностите в друг диапазон или масив. Сортирането може да се извърши по една или няколко колони.

    SORTBY е една от шестте нови функции за динамични масиви, налични в Excel за Microsoft 365 и Excel 2021. Резултатът от нея е динамичен масив, който се разпространява в съседните клетки и се актуализира автоматично при промяна на изходните данни.

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

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

    Масив (задължително) - обхватът от клетки или масив от стойности, които ще бъдат сортирани.

    By_array1 (задължително) - обхватът или масивът, по който да се сортира.

    Sort_order1 (по избор) - редът на сортиране:

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

    By_array2 / Sort_order2 , ... (по избор) - допълнителни двойки масиви/поредби, които да се използват за сортиране.

    Важна забележка! Понастоящем функцията SORTBY е налична само с абонаменти за Microsoft 365 и Excel 2021. В Excel 2019, Excel 2016 и по-ранни версии функцията SORTBY не е налична.

    Функция SORTBY - 4 неща, които трябва да запомните

    За да работи правилно формулата SORTBY на Excel, трябва да се обърне внимание на няколко важни момента:

    • By_array Аргументите трябва да са с височина на един ред или на една колона.
    • Сайтът масив и всички by_array Аргументите трябва да имат съвместими размери. Например, когато сортирате по две колони, масив , by_array1 и by_array2 трябва да имат еднакъв брой редове; в противен случай ще се появи грешка #VALUE.
    • Ако масивът, върнат от SORTBY, е крайният резултат (изведен в клетка и не е предаден на друга функция), Excel създава динамичен диапазон за разливане и го запълва с резултатите. Затова се уверете, че имате достатъчно празни клетки надолу и/или вдясно от клетката, в която въвеждате формулата, в противен случай ще получите грешка #SPILL.
    • Резултатите от формулите SORTBY се актуализират автоматично, когато изходните данни се променят. Въпреки това новите записи, които са добавени извън масива, посочен във формулата, не се включват в резултатите, освен ако не актуализирате масив За да се разшири автоматично препратеният масив, преобразувайте изходния диапазон в таблица на Excel или създайте динамичен именуван диапазон.

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

    Ето един типичен сценарий за използване на формулата SORTBY в Excel:

    Да предположим, че имате списък с проекти с Стойност Искате да сортирате проектите по тяхната стойност на отделен лист. Тъй като другите потребители не трябва да виждат числата, предпочитате да не включвате полето Стойност колона в резултатите.

    Задачата може да се изпълни лесно с функцията SORTBY, за която се задават следните аргументи:

    • Масив е A2:A10 - тъй като не желаете Стойност да бъде показана в резултатите, я оставяте извън масива.
    • By_array1 е B2:B10 - сортиране по Стойност .
    • Sort_order1 е -1 - низходящ, т.е. от най-големия към най-малкия.

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

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

    За улеснение използваме формулата на същия лист - въвеждаме я в D2 и натискаме клавиша Enter. Резултатите се "разливат" автоматично в толкова клетки, колкото е необходимо (D2:D10 в нашия случай). Но технически формулата е само в първата клетка и изтриването ѝ от D2 ще изтрие всички резултати.

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

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

    Къде: Лист1 е работният лист, който съдържа оригиналните данни.

    Използване на функцията SORTBY в Excel - примери за формули

    По-долу ще намерите още няколко примера за използване на SORTBY, които, надяваме се, ще се окажат полезни и полезни.

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

    Основната формула, разгледана по-горе, сортира данните по една колона. Но какво ще стане, ако трябва да добавите още едно ниво на сортиране?

    Ако приемем, че нашата примерна таблица има две полета, Статус (колона В) и Стойност (колона В) , искаме да сортираме първо по Статус по азбучен ред, а след това по Стойност в низходящ ред.

    За да сортираме по две колони, просто добавяме още една двойка от by_array / sort_order аргументи:

    • Масив е A2:C10 - този път искаме да включим и трите колони в резултатите.
    • By_array1 е B2:B10 - първо, сортиране по Статус .
    • Sort_order1 е 1 - подредете по азбучен ред от A до Z.
    • By_array2 е C2:C10 - тогава сортирайте по Стойност .
    • Sort_order2 е -1 - сортиране от най-голям към най-малък.

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

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

    Което пренарежда данните ни точно както сме ги инструктирали:

    Потребителско сортиране в Excel с формула

    За да сортирате данните в потребителски ред, можете да използвате функцията за потребителско сортиране на Excel или да създадете формула SORTBY MATCH по този начин:

    SORTBY(масив, MATCH( range_to_sort , custom_list , 0))

    Ако разгледате по-отблизо нашия набор от данни, вероятно ще ви се стори по-удобно да сортирате проектите по техния статус "логически", например по важност, а не по азбучен ред.

    За да го направите, първо създайте потребителски списък в желания ред на сортиране ( В процес на изпълнение , Завършен , В режим на изчакване ), като въведете всяка стойност в отделна клетка в диапазона E2:E4.

    И след това, като използваме общата формула по-горе, предоставяме обхвата на източника за масив (A2:C10),. Статус колона за range_to_sort (B2:B10) и персонализирания списък, който създадохме за custom_list (E2:E4).

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

    В резултат на това проектите са подредени по статус точно както е необходимо:

    За да сортирате списъка по избор в обратен ред, поставете -1 за sort_order1 аргумент:

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

    А проектите ще бъдат подредени в обратна посока:

    Искате ли допълнително да сортирате записите в рамките на всеки статус? Няма проблем. Просто добавете още едно ниво на сортиране към формулата, например по Стойност (C2:C10) и задайте желания ред на сортиране, в нашия случай възходящ:

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

    Голямо предимство на формулата SORTBY пред функцията за потребителско сортиране на Excel е, че формулата се актуализира автоматично при всяка промяна на първоначалните данни, докато функцията изисква почистване и повторно сортиране при всяка промяна.

    Как работи тази формула:

    Както вече споменахме, функцията SORTBY на Excel може да обработва само масиви "сортиране по", чиито размери са съвместими с изходния масив. Тъй като нашият изходен масив (C2:C10) съдържа 9 реда, а потребителският списък (E2:E4) - само 3 реда, не можем да го предоставим директно на функцията by_array Вместо това използваме функцията MATCH, за да създадем масив от 9 реда:

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

    Тук използваме Статус колона (B2:B10) като стойности за търсене и нашия потребителски списък (E2:E5) като масив за търсене. Последният аргумент е зададен на 0, за да се търсят точни съвпадения. В резултат получаваме масив от 9 числа, всяко от които представлява относителната позиция на даден Статус стойност в потребителския списък:

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

    Този масив отива директно към by_array аргумент на функцията SORTBY и я принуждава да постави данните в реда, съответстващ на елементите на масива, т.е. първо записите, представени с 1, след това записите, представени с 2, и т.н.

    Случайно сортиране в Excel с формула

    В по-ранните версии на Excel можете да сортирате на случаен принцип с функцията RAND, както е обяснено в този урок: Как да сортирате списък на случаен принцип в Excel.

    В новия Excel можете да използвате по-мощната функция RANDARRAY заедно със SORTBY:

    SORTBY( масив , RANDARRAY(ROWS( масив )))

    Къде: масив са изходните данни, които искате да разбъркате.

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

    Например, за да сортирате произволно списък в A2:A10, използвайте тази формула:

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

    За разбъркване на данните в A2:C10, като се запазят редовете заедно, използвайте тази опция:

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

    Как работи тази формула:

    Функцията RANDARRAY създава масив от случайни числа, който се използва за сортиране, и го предавате в by_array За да определите колко случайни числа да се генерират, пребройте броя на редовете в изходния диапазон, като използвате функцията ROWS, и подайте това число към функцията SORTBY. редове аргумент на RANDARRAY. Това е всичко!

    Забележка. Подобно на своя предшественик, RANDARRAY е променлива функция и генерира нов масив от случайни числа при всяко преизчисляване на работния лист. В резултат на това данните ви ще бъдат пренасочвани при всяка промяна в листа. За да предотвратите автоматичното пренасочване, можете да използвате бутона Специално поставяне > Стойности за заместване на формулите с техните стойности.

    Сортиране на клетките по дължина на низ

    За да сортирате клетките по дължината на текстовите низове, които съдържат, използвайте функцията LEN, за да преброите броя на символите във всяка клетка, и подайте изчислените дължини към функцията by_array аргумент на SORTBY. sort_order аргументът може да бъде зададен на 1 или -1, в зависимост от предпочитания ред на сортиране.

    Сортиране на текстов низ от най-малкия до най-големия:

    SORTBY(масив, LEN(масив), 1)

    Сортиране на текстов низ от най-големия към най-малкия:

    SORTBY(масив, LEN(масив), -1)

    Ето и една формула, която демонстрира този подход върху реални данни:

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

    Където A2:A7 са оригиналните клетки, които искате да сортирате по дължина на текста във възходящ ред:

    SORTBY срещу SORT

    В групата на новите функции за динамични масиви на Excel има две, предназначени за сортиране. По-долу изброяваме най-съществените разлики и прилики, както и кога е най-добре да се използва всяка от тях.

    • За разлика от функцията SORT, SORTBY не изисква масивът "sort by" да е част от изходния масив, нито да се появява в резултатите. Така че, когато задачата ви е да сортирате диапазон въз основа на друг независим масив или потребителски списък, SORTBY е правилната функция за използване. Ако искате да сортирате диапазон въз основа на собствените му стойности, тогава SORT е по-подходяща.
    • И двете функции поддържат множество нива на сортиране и могат да се свързват с други динамични масиви и конвенционални функции.
    • И двете функции са достъпни само за потребителите на Excel 365 и Excel 2021.

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

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

    Невалидни аргументи by_array

    Сайтът by_array аргументите трябва да са един ред или една колона и да са съвместими по размер с масив например, ако масив има 10 реда, by_array В противен случай се появява грешка #VALUE!.

    Невалидни аргументи за sort_order

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

    Няма достатъчно място за резултатите

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

    Работната книга на източника е затворена

    Ако формулата SORTBY препраща към друг файл на Excel, и двете работни книги трябва да са отворени. Ако изходната работна книга е затворена, се появява грешка #REF!.

    Вашата версия на Excel не поддържа динамични масиви

    Когато се използва в преддинамична версия на Excel, функцията SORT връща грешка #NAME?.

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

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

    Формули за SORTBY в Excel (.xlsx файл)

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