Funkcja SORTBY w programie Excel - sortowanie niestandardowe za pomocą formuły

  • Udostępnij To
Michael Brown

Dzisiaj przyjrzymy się dokładnie składni i typowym zastosowaniom nowej dynamicznej funkcji tablicowej SORTBY. Dowiesz się, jak niestandardowo sortować w Excelu za pomocą formuły, losowo sortować listę, układać komórki według długości tekstu i nie tylko.

Program Microsoft Excel udostępnia wiele sposobów porządkowania danych tekstowych alfabetycznie, dat chronologicznie oraz liczb od najmniejszej do największej lub od największej do najmniejszej. Istnieje również sposób sortowania według własnych, niestandardowych list. Oprócz konwencjonalnej funkcji Sortuj, program Excel 365 wprowadza zupełnie nowy sposób sortowania danych za pomocą formuł - bardzo wygodny i niesamowicie prosty w użyciu!

    Funkcja SORTBY w programie Excel

    Funkcja SORTBY w Excelu służy do sortowania jednego zakresu lub tablicy na podstawie wartości w innym zakresie lub tablicy. Sortowanie może odbywać się według jednej lub wielu kolumn.

    SORTBY to jedna z sześciu nowych funkcji tablic dynamicznych dostępnych w Excelu dla Microsoft 365 i Excelu 2021. Jej wynikiem jest dynamiczna tablica, która rozlewa się na sąsiednie komórki i aktualizuje się automatycznie, gdy zmieniają się dane źródłowe.

    Funkcja SORTBY ma zmienną liczbę argumentów - dwa pierwsze są wymagane, a pozostałe opcjonalne:

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

    Array (wymagane) - zakres komórek lub tablica wartości do posortowania.

    By_array1 (wymagane) - zakres lub tablica, według której ma być sortowane.

    Sort_order1 (opcjonalnie) - kolejność sortowania:

    • 1 lub pominięty (domyślnie) - rosnący
    • -1 - malejąco

    By_array2 / Sort_order2 , ... (opcjonalnie) - dodatkowe pary tablic / zamówień do wykorzystania przy sortowaniu.

    Ważna uwaga! Obecnie funkcja SORTBY jest dostępna tylko w przypadku subskrypcji Microsoft 365 i programu Excel 2021. W programie Excel 2019, Excel 2016 i wcześniejszych wersjach funkcja SORTBY nie jest dostępna.

    Funkcja SORTBY - 4 rzeczy, o których należy pamiętać

    Aby formuła SORTBY w Excelu działała poprawnie, należy zwrócić uwagę na kilka ważnych kwestii:

    • By_array argumenty powinny mieć wysokość jednego wiersza lub szerokość jednej kolumny.
    • Na stronie macierz i wszystkie według_array argumenty muszą mieć zgodne wymiary. Na przykład podczas sortowania według dwóch kolumn, macierz , według_array1 oraz przez_array2 powinny mieć tę samą liczbę wierszy; w przeciwnym razie pojawi się błąd #VALUE.
    • Jeśli tablica zwrócona przez SORTBY jest wynikiem końcowym (wyjściem w komórce i nie jest przekazywana do innej funkcji), Excel tworzy dynamiczny zakres rozlewania i wypełnia go wynikami. Dlatego upewnij się, że masz wystarczająco dużo pustych komórek w dół i/lub na prawo od komórki, w której wprowadzasz formułę, w przeciwnym razie otrzymasz błąd #SPILL.
    • Wyniki formuł SORTBY są aktualizowane automatycznie przy każdej zmianie danych źródłowych. Jednak nowe wpisy dodane poza tablicą, do której odwołuje się formuła, nie są uwzględniane w wynikach, o ile nie zostanie zaktualizowana tabela macierz Aby tablica odniesienia rozwijała się automatycznie, należy przekonwertować zakres źródłowy na tabelę programu Excel lub utworzyć dynamiczny zakres nazwany.

    Podstawowa formuła SORTBY w programie Excel

    Oto typowy scenariusz użycia formuły SORTBY w programie Excel:

    Załóżmy, że masz listę projektów z Wartość Chcesz posortować projekty według ich wartości na osobnym arkuszu. Ponieważ inni użytkownicy nie muszą widzieć tych liczb, wolisz nie dołączać pola Wartość kolumna w wynikach.

    Zadanie to można łatwo zrealizować za pomocą funkcji SORTBY, dla której podajesz następujące argumenty:

    • Array to A2:A10 - skoro nie chcesz Wartość kolumnę, która ma być wyświetlana w wynikach, zostawiasz poza tablicą.
    • By_array1 to B2:B10 - sortuj według Wartość .
    • Sort_order1 wynosi -1 - malejąco, czyli od najwyższego do najniższego.

    Składając te argumenty w całość, otrzymujemy taki oto wzór:

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

    Dla uproszczenia używamy formuły na tym samym arkuszu - wpisujemy ją w D2 i naciskamy klawisz Enter. Wyniki "rozlewają się" automatycznie do tylu komórek, ile potrzeba (w naszym przypadku D2:D10). Ale technicznie rzecz biorąc, formuła znajduje się tylko w pierwszej komórce i usunięcie jej z D2 spowoduje usunięcie wszystkich wyników.

    Po zastosowaniu na innym arkuszu formuła przyjmuje następujący kształt:

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

    Gdzie Plansza1. to arkusz zawierający oryginalne dane.

    Użycie funkcji SORTBY w Excelu - przykłady formuł

    Poniżej znajdziesz jeszcze kilka przykładów użycia SORTBY, które miejmy nadzieję okażą się przydatne i wnikliwe.

    Sortowanie według wielu kolumn

    Omówiona powyżej podstawowa formuła sortuje dane według jednej kolumny. Co jednak zrobić, gdy trzeba dodać jeszcze jeden poziom sortowania?

    Zakładając, że nasza przykładowa tabela ma dwa pola, Status (kolumna B) oraz Wartość (kolumna C) chcemy posortować najpierw według Status alfabetycznie, a następnie według Wartość zstępujący.

    Aby sortować według dwóch kolumn, wystarczy dodać jeszcze jedną parę według_array / sortowanie_order argumenty:

    • Array to A2:C10 - tym razem chcemy uwzględnić w wynikach wszystkie trzy kolumny.
    • By_array1 to B2:B10 - najpierw posortuj według Status .
    • Sort_order1 jest 1 - sortuj alfabetycznie od A do Z.
    • By_array2 to C2:C10 - następnie posortuj według Wartość .
    • Sort_order2 jest -1 - sortuj od największego do najmniejszego.

    W efekcie otrzymujemy następujący wzór:

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

    Który rearanżuje nasze dane dokładnie tak, jak je poinstruowaliśmy:

    Niestandardowe sortowanie w programie Excel za pomocą formuły

    Aby posortować dane w niestandardowej kolejności, można użyć funkcji Sortowanie niestandardowe programu Excel lub zbudować formułę SORTBY MATCH w ten sposób:

    SORTBY(tablica, MATCH( zakres_do_sortu , indywidualna_lista , 0))

    Przyglądając się bliżej naszemu zbiorowi danych, prawdopodobnie stwierdzisz, że wygodniej jest sortować projekty według ich statusu "logicznie", np. według ważności, a nie alfabetycznie.

    Aby mieć to zrobione, najpierw tworzymy niestandardową listę w pożądanej kolejności sortowania ( W trakcie realizacji , Zakończono , W zawieszeniu ) wpisując każdą wartość do osobnej komórki w zakresie E2:E4.

    Następnie, korzystając z powyższego wzoru ogólnego, podajemy zakres źródłowy dla macierz (A2:C10),. Status kolumna dla zakres_do_sortu (B2:B10), oraz lista niestandardowa, którą utworzyliśmy dla indywidualna_lista (E2:E4).

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

    W efekcie mamy projekty posortowane według ich statusu dokładnie tak, jak trzeba:

    Aby posortować listę niestandardową w odwrotnej kolejności, umieść -1 dla opcji sortowanie_order1 argument:

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

    I będziesz miał projekty posegregowane w odwrotnym kierunku:

    Chcesz dodatkowo posortować rekordy w obrębie każdego statusu? Nie ma problemu, wystarczy dodać do formuły jeszcze jeden poziom sortowania, np. według Wartość (C2:C10), oraz określić pożądaną kolejność sortowania, w naszym przypadku rosnącą:

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

    Dużą przewagą formuły SORTBY nad funkcją sortowania niestandardowego Excela jest to, że formuła aktualizuje się automatycznie przy każdej zmianie oryginalnych danych, podczas gdy funkcja ta wymaga czyszczenia i ponownego sortowania przy każdej zmianie.

    Jak działa ta formuła:

    Jak już wspomniano, funkcja SORTBY w Excelu może przetwarzać tylko tablice "sortowane według", których wymiary są zgodne z tablicą źródłową. Ponieważ nasza tablica źródłowa (C2:C10) zawiera 9 wierszy, a lista niestandardowa (E2:E4) tylko 3 wiersze, nie możemy jej dostarczyć bezpośrednio do funkcji według_array Zamiast tego używamy funkcji MATCH, aby stworzyć tablicę 9-rzędową:

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

    Tutaj używamy Status kolumnę (B2:B10) jako wartości lookup oraz naszą własną listę (E2:E5) jako tablicę lookup. Ostatni argument jest ustawiony na 0, aby szukać dokładnych dopasowań. W rezultacie otrzymujemy tablicę 9 liczb, każda reprezentująca względną pozycję danego Status wartość w liście niestandardowej:

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

    Tablica ta trafia bezpośrednio do według_array argument funkcji SORTBY i zmusza ją do umieszczenia danych w kolejności odpowiadającej elementom tablicy, czyli najpierw wpisy reprezentowane przez 1, potem wpisy reprezentowane przez 2 itd.

    Losowe sortowanie w Excelu za pomocą formuły

    We wcześniejszych wersjach programu Excel można wykonać sortowanie losowe za pomocą funkcji RAND, jak wyjaśniono w tym samouczku: Jak losowo sortować listę w programie Excel.

    W nowym Excelu wraz z SORTBY można użyć bardziej rozbudowanej funkcji RANDARRAY:

    SORTBY( macierz , RANDARRAY(ROWS( macierz )))

    Gdzie macierz to dane źródłowe, które chcesz przetasować.

    Ta ogólna formuła działa zarówno dla listy składającej się z jednej kolumny, jak i dla zakresu wielokolumnowego.

    Na przykład, aby losowo posortować listę w A2:A10, użyj tej formuły:

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

    Aby przetasować dane w A2:C10 zachowując wiersze razem, użyj tego:

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

    Jak działa ta formuła:

    Funkcja RANDARRAY tworzy tablicę liczb losowych, które mają być użyte do sortowania, i przekazujesz ją w według_array Aby określić liczbę generowanych liczb losowych, należy policzyć liczbę wierszy w zakresie źródłowym za pomocą funkcji ROWS, a następnie "podać" tę liczbę do argumentu SORTBY. wiersze argument RANDARRAY'a - to jest to!

    Uwaga. Podobnie jak jej poprzedniczka, RANDARRAY jest funkcją zmienną i generuje nową tablicę liczb losowych przy każdym przeliczeniu arkusza. W wyniku tego dane będą przenoszone przy każdej zmianie w arkuszu. Aby zapobiec automatycznemu przenoszeniu, można użyć funkcji Wklej Specjalnie > Wartości funkcja zastępująca formuły ich wartościami.

    Sortowanie komórek według długości ciągu znaków

    Aby posortować komórki według długości zawartych w nich łańcuchów tekstowych, należy użyć funkcji LEN do policzenia liczby znaków w każdej komórce i przekazać obliczone długości do funkcji według_array argument SORTBY. sortowanie_order argument może być ustawiony na 1 lub -1, w zależności od preferowanej kolejności sortowania.

    Aby posortować ciąg tekstowy od najmniejszego do największego:

    SORTBY(tablica, LEN(tablica), 1)

    Aby posortować ciąg tekstowy od największego do najmniejszego:

    SORTBY(tablica, LEN(tablica), -1)

    A oto wzór, który demonstruje to podejście na rzeczywistych danych:

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

    Gdzie A2:A7 to oryginalne komórki, które chciałbyś posortować według długości tekstu w porządku rosnącym:

    SORTBY vs. SORT

    W grupie nowych dynamicznych funkcji tablicowych Excela znajdują się dwie przeznaczone do sortowania. Poniżej wymieniamy najistotniejsze różnice i podobieństwa, a także kiedy najlepiej stosować każdą z nich.

    • W przeciwieństwie do funkcji SORT, SORTBY nie wymaga, aby tablica "sort by" była częścią tablicy źródłowej, ani aby pojawiła się w wynikach. Tak więc, gdy Twoim zadaniem jest posortowanie zakresu na podstawie innej niezależnej tablicy lub niestandardowej listy, SORTBY jest właściwą funkcją do użycia. Jeśli szukasz sortowania zakresu na podstawie jego własnych wartości, wtedy SORT jest bardziej odpowiedni.
    • Obie funkcje obsługują wiele poziomów sortowania i obie mogą być połączone łańcuchowo z innymi dynamicznymi funkcjami tablicowymi i konwencjonalnymi.
    • Obie funkcje są dostępne tylko dla użytkowników Excela 365 i Excela 2021.

    Funkcja SORTBY w programie Excel nie działa

    W przypadku, gdy Twoja formuła SORTBY zwraca błąd, najprawdopodobniej jest to spowodowane jednym z następujących powodów.

    Nieprawidłowe argumenty by_array

    Na stronie według_array Argumenty muszą być pojedynczym wierszem lub pojedynczą kolumną i być zgodne pod względem rozmiaru z macierz Na przykład, jeśli macierz ma 10 rzędów, według_array powinien zawierać również 10 wierszy. W przeciwnym razie pojawi się błąd #VALUE!

    Nieprawidłowe argumenty sort_order

    Na stronie sortowanie_order argumentami mogą być tylko 1 (rosnąco) lub -1 (malejąco). Jeśli nie podano żadnej wartości, to SORTBY domyślnie ustawia się na porządek rosnący. Jeśli podano jakąkolwiek inną wartość, to zwracany jest błąd #VALUE!

    Nie ma wystarczającej ilości miejsca na wyniki

    Jak każda inna funkcja tablicy dynamicznej, SORTBY rozsypuje wyniki do automatycznie zmienianego i aktualizowanego zakresu. Jeśli nie ma wystarczającej liczby pustych komórek, aby wyświetlić wszystkie wartości, rzucany jest błąd #SPILL!.

    Skoroszyt źródłowy jest zamknięty

    Jeśli formuła SORTBY odwołuje się do innego pliku Excela, oba skoroszyty muszą być otwarte. Jeśli źródłowy skoroszyt jest zamknięty, pojawia się błąd #REF!

    Twoja wersja programu Excel nie obsługuje tablic dynamicznych

    W przypadku użycia w przeddynamicznej wersji programu Excel funkcja SORT zwraca błąd #NAME?

    Oto jak używać funkcji SORTBY w Excelu, aby zrobić niestandardowe sortowanie i inne rzeczy. Dziękuję za przeczytanie i mam nadzieję, że zobaczymy się na naszym blogu w przyszłym tygodniu!

    Zeszyt ćwiczeń do pobrania

    Formuły SORTBY w Excelu (plik .xlsx)

    Michael Brown jest oddanym entuzjastą technologii z pasją do upraszczania złożonych procesów za pomocą narzędzi programowych. Dzięki ponad dziesięcioletniemu doświadczeniu w branży technologicznej doskonalił swoje umiejętności w programach Microsoft Excel i Outlook, a także w Arkuszach i Dokumentach Google. Blog Michaela jest poświęcony dzieleniu się swoją wiedzą i doświadczeniem z innymi, dostarczając łatwych do zastosowania wskazówek i samouczków w celu poprawy produktywności i wydajności. Niezależnie od tego, czy jesteś doświadczonym profesjonalistą, czy początkującym, blog Michaela oferuje cenne spostrzeżenia i praktyczne porady dotyczące maksymalnego wykorzystania tych niezbędnych narzędzi programowych.