Funkcja SORT w Excelu - automatyczne sortowanie danych za pomocą formuły

  • Udostępnij To
Michael Brown

Samouczek pokazuje jak wykorzystać funkcję SORT do dynamicznego sortowania tablic z danymi. Poznasz formułę do sortowania alfabetycznego w Excelu, układania liczb w porządku rosnącym lub malejącym, sortowania według wielu kolumn i wiele innych.

Funkcja Sort jest już od dawna, ale wraz z wprowadzeniem dynamicznych tablic w Excelu 365 pojawił się zadziwiająco prosty sposób sortowania za pomocą formuł. Piękno tej metody polega na tym, że wyniki aktualizują się automatycznie, gdy zmieniają się dane źródłowe.

    Funkcja SORT w programie Excel

    Funkcja SORT w programie Excel sortuje zawartość tablicy lub zakresu według kolumn lub wierszy, w kolejności rosnącej lub malejącej.

    SORT należy do grupy funkcji tablicowych dynamicznych. W efekcie otrzymujemy tablicę dynamiczną, która automatycznie rozlewa się na sąsiednie komórki w pionie lub poziomie, w zależności od kształtu tablicy źródłowej.

    Składnia funkcji SORT jest następująca:

    SORT(array, [sort_index], [sort_order], [by_col])

    Gdzie:

    Array (wymagane) - to tablica wartości lub zakres komórek do posortowania. Mogą to być dowolne wartości, w tym tekst, liczby, daty, godziny itp.

    Sort_index (opcjonalne) - liczba całkowita określająca, według której kolumny lub wiersza ma być sortowane. Jeżeli zostanie pominięta, to zostanie użyty domyślny indeks 1.

    Sort_order (opcjonalne) - określa kolejność sortowania:

    • 1 lub pominięty (domyślnie) - kolejność rosnąca, czyli od najmniejszego do największego
    • -1 - porządek malejący, czyli od największego do najmniejszego

    By_col (opcjonalnie) - wartość logiczna określająca kierunek sortowania:

    • FALSE lub pominięty (domyślnie) - sortuj według wierszy. Będziesz używał tej opcji przez większość czasu.
    • TRUE - sortowanie według kolumn Użyj tej opcji, jeśli Twoje dane są zorganizowane poziomo w kolumnach, jak w tym przykładzie.

    Funkcja SORT w Excelu - wskazówki i uwagi

    SORT jest nową dynamiczną funkcją tablicową i jako taka ma kilka specyficznych cech, o których powinieneś wiedzieć:

    • Obecnie funkcja SORT jest dostępna tylko w Microsoft 365 i Excel 2021. Excel 2019, Excel 2016 nie obsługują dynamicznych formuł tablicowych, więc funkcja SORT nie jest dostępna w tych wersjach.
    • Jeśli tablica zwrócona przez formułę SORT jest wynikiem końcowym (tj. nie jest przekazywana do innej funkcji), Excel dynamicznie tworzy odpowiednio duży zakres i wypełnia go posortowanymi wartościami. Dlatego upewnij się, że zawsze masz wystarczająco dużo pustych komórek w dół lub/i na prawo od komórki, w której wprowadzasz formułę, w przeciwnym razie wystąpi błąd #SPILL.
    • Wyniki są aktualizowane dynamicznie wraz ze zmianami danych źródłowych, jednak macierz dostarczony do formuły nie rozszerza się automatycznie na nowe wpisy, które są dodawane poza referencjami macierz Aby uwzględnić takie elementy, należy albo zaktualizować macierz w swojej formule, lub przekonwertować zakres źródłowy na tabelę, jak pokazano w tym przykładzie, lub utworzyć dynamiczny zakres nazwany.

    Podstawowa formuła SORT w Excelu

    Ten przykład pokazuje podstawową formułę do sortowania danych w Excelu w porządku rosnącym i malejącym.

    Zakładając, że twoje dane są ułożone alfabetycznie, jak pokazano na poniższym zrzucie ekranu. Szukasz sortowania liczb w kolumnie B bez łamania lub mieszania danych.

    Formuła do sortowania w porządku rosnącym

    Aby posortować wartości w kolumnie B od najmniejszej do największej, oto wzór, którego należy użyć:

    =SORT(A2:B8, 2, 1)

    Gdzie:

    • A2:B8 jest tablicą źródłową
    • 2 to numer kolumny do sortowania według
    • 1 to porządek sortowania rosnący

    Ponieważ nasze dane są zorganizowane w wierszach, ostatni argument można pominąć, aby domyślnie wybrać FALSE - sortowanie według wierszy.

    Wystarczy wpisać formułę w dowolnej pustej komórce (w naszym przypadku D2), nacisnąć Enter , a wyniki rozleją się automatycznie do D2:E8.

    Formuła do sortowania w porządku malejącym

    Aby posortować dane malejąco, tzn. od największego do najmniejszego, należy ustawić sortowanie_order argument na -1 w taki sposób:

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

    Wprowadź formułę w lewej górnej komórce zakresu docelowego, a otrzymasz taki wynik:

    W podobny sposób można sortować wartości tekstowe w porządku alfabetycznym od A do Z lub od Z do A.

    Jak sortować dane w Excelu za pomocą formuły

    Poniższe przykłady pokazują kilka typowych zastosowań funkcji SORT w Excelu oraz kilka nietrywialnych.

    Excel SORTOWANIE według kolumny

    Kiedy sortujesz dane w Excelu, w większości przypadków zmieniasz kolejność wierszy. Ale kiedy twoje dane są zorganizowane poziomo z wierszami zawierającymi etykiety i kolumnami zawierającymi rekordy, możesz potrzebować sortowania od lewej do prawej, a nie od góry do dołu.

    Aby posortować według kolumny w programie Excel, należy ustawić przez_kol na TRUE. W tym przypadku, sort_index będzie reprezentować wiersz, a nie kolumnę.

    Na przykład, aby posortować poniższe dane według Qty. od najwyższej do najniższej, użyj tej formuły:

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

    Gdzie:

    • B1:H2 to dane źródłowe do posortowania
    • 2 to indeks sortowania, ponieważ sortujemy liczby w drugim rzędzie
    • -1 oznacza porządek sortowania malejący
    • TRUE oznacza sortowanie kolumn, nie wierszy

    Sortowanie według wielu kolumn w różnej kolejności (sortowanie wielopoziomowe)

    Podczas pracy ze złożonymi modelami danych, możesz często potrzebować wielopoziomowego sortowania. Czy można to zrobić za pomocą formuły? Tak, łatwo! To co robisz to dostarczanie stałych tablicowych dla sort_index oraz sortowanie_order argumenty.

    Na przykład, aby posortować poniższe dane najpierw według Region (kolumna A) od A do Z, a następnie przez Ilość . (kolumna C) od najmniejszego do największego, ustawić następujące argumenty:

    • Array to dane z A2:C13.
    • Sort_index jest stałą tablicową {1,3}, ponieważ najpierw sortujemy według Region (pierwsza kolumna), a następnie przez Ilość . (3 kolumna).
    • Sort_order jest stałą tablicową {1,-1}, ponieważ 1. kolumna ma być posortowana rosnąco, a 3. kolumna malejąco.
    • Przez_col jest pomijany, ponieważ sortujemy wiersze, co jest domyślne.

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

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

    I działa to doskonale! Wartości tekstowe w pierwszej kolumnie są posortowane alfabetycznie, a liczby w trzeciej kolumnie od największej do najmniejszej:

    Sortowanie i filtrowanie w programie Excel

    W przypadku, gdy chcesz filtrować dane za pomocą pewnych kryteriów i uporządkować dane wyjściowe, użyj funkcji SORT i FILTER razem:

    SORT(FILTER(array, kryteria_zakresu = kryteria ), [sort_index], [sort_order], [by_col])

    Funkcja FILTER pobiera tablicę wartości na podstawie zdefiniowanych przez Ciebie kryteriów i przekazuje tę tablicę do pierwszego argumentu funkcji SORT.

    Najlepszą rzeczą w tej formule jest to, że wyprowadza ona również wyniki jako dynamiczny zakres rozlania, bez konieczności naciskania Ctrl + Shift + Enter lub zgadywania, do ilu komórek należy ją skopiować. Jak zwykle, wpisujesz formułę w najwyższej komórce i naciskasz klawisz Enter.

    Jako przykład, zamierzamy wyodrębnić pozycje z ilością równą lub większą niż 30 (>=30) z danych źródłowych w A2:B9 i ułożyć wyniki w porządku rosnącym.

    W tym celu najpierw ustawiamy warunek, powiedzmy, w komórce E2, jak na poniższym obrazku. A następnie budujemy w ten sposób naszą formułę SORT w Excelu:

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

    Oprócz macierz generowane przez funkcję FILTER, określamy jedynie sort_index Pozostałe dwa argumenty są pominięte, ponieważ domyślne działają dokładnie tak, jak potrzebujemy (sortowanie rosnące, według wierszy).

    Pobierz N największych lub najmniejszych wartości i posortuj wyniki

    Podczas analizy ogromnych ilości informacji często zachodzi potrzeba wyodrębnienia pewnej liczby najważniejszych wartości, a także ułożenia ich w pożądanej kolejności oraz wybrania kolumn, które zostaną uwzględnione w wynikach. Brzmi to skomplikowanie? Nie z nowymi funkcjami tablic dynamicznych!

    Oto ogólna formuła:

    INDEX(SORT(...), SEQUENCE( n ), { kolumna1_do_zwrotu , kolumna2_do_zwrotu , ...})

    Gdzie n to numer wartości, które chcesz zwrócić.

    Z poniższego zestawu danych załóżmy, że chcesz uzyskać listę top 3 na podstawie liczb w kolumnie C.

    Aby mieć to zrobione, najpierw sortujesz tablicę A2:C13 według 3 kolumny w porządku malejącym:

    SORT(A2:C13, 3, -1)

    A następnie zagnieździć powyższy wzór w pierwszym ( macierz ) funkcji INDEX, aby tablica była posortowana od największego do najmniejszego.

    W przypadku drugiego ( suma wierszy ), który wskazuje, ile wierszy zwrócić, wygeneruj wymagane liczby porządkowe za pomocą funkcji SEQUENCE. Ponieważ potrzebujemy 3 wartości górnych, używamy SEQUENCE(3), co jest tożsame z dostarczeniem pionowej stałej tablicowej {1;2;3} bezpośrednio w formule.

    Dla trzeciego ( suma kolumn ) argument określający ile kolumn ma zwrócić, podaj numery kolumn w postaci stałej tablicowej poziomej. Chcemy zwrócić kolumny B i C, więc używamy tablicy {2,3}.

    Ostatecznie otrzymujemy następujący wzór:

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

    I daje to dokładnie takie rezultaty, jakich chcemy:

    Aby powrócić 3 dno wartości, wystarczy posortować oryginalne dane od najmniejszej do największej. W tym celu należy zmienić sortowanie_order argument od -1 do 1:

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

    Zwróć posortowaną wartość w określonej pozycji

    Patrząc z innej perspektywy, co jeśli chcesz zwrócić tylko określoną pozycję sortowania? Powiedzmy, tylko 1, tylko 2 lub tylko 3 rekord z posortowanej listy? Aby to zrobić, użyj uproszczonej wersji formuły INDEX SORT omówionej powyżej:

    INDEX(SORT(...), n , { kolumna1_do_zwrotu , kolumna2_do_zwrotu , ...})

    Gdzie n jest pozycją będącą przedmiotem zainteresowania.

    Na przykład, aby uzyskać konkretną pozycję od góry (tj. od danych posortowanych malejąco), użyj tej formuły:

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

    Aby uzyskać konkretną pozycję od dołu (tj. Z danych posortowanych rosnąco), użyj tego:

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

    Gdzie A2:C13 to dane źródłowe, F1 to pozycja od góry, I1 to pozycja od dołu, a {2,3} to kolumny do zwrócenia.

    Użyj tabeli Excela, aby tablica sortowania rozwijała się automatycznie

    Jak już wiesz, posortowana tablica aktualizuje się automatycznie, gdy dokonujesz jakichkolwiek zmian w oryginalnych danych. Jest to standardowe zachowanie wszystkich funkcji tablic dynamicznych, w tym SORT. Jednakże, gdy dodajesz nowe wpisy poza tablicą referencyjną, nie są one automatycznie uwzględniane w formule. Jeśli chcesz, aby Twoja formuła reagowała na takie zmiany, przekonwertuj zakres źródłowy na pełny zakres.funkcjonalna tabela Excela i użyj strukturalnych odniesień w swojej formule.

    Aby zobaczyć jak to działa w praktyce, proszę rozważyć następujący przykład.

    Załóżmy, że używasz poniższej formuły Excel SORT, aby uporządkować wartości z zakresu A2:B8 w kolejności alfabetycznej:

    =SORT(A2:B8, 1, 1)

    Następnie wprowadzasz nowy wpis w wierszu 9... i jesteś rozczarowany, widząc, że nowo dodany wpis jest pominięty w zakresie rozlewu:

    W tym celu wystarczy zaznaczyć zakres wraz z nagłówkami kolumn (A1:B8) i nacisnąć Ctrl + T. Podczas tworzenia formuły zaznacz zakres źródłowy za pomocą myszy, a nazwa tabeli zostanie automatycznie wstawiona do formuły (jest to tzw. odniesienie strukturalne):

    =SORT(Tabela1, 1, 1)

    Gdy wpiszesz nowy wpis tuż pod ostatnim wierszem, tabela rozwinie się automatycznie, a nowe dane zostaną włączone do zakresu rozlanego formuły SORT:

    Funkcja SORT w programie Excel nie działa

    Jeśli twoja formuła SORT powoduje błąd, to najprawdopodobniej jest to spowodowane następującymi przyczynami.

    #Błąd nazwy: starsza wersja Excela

    SORT jest nową funkcją i działa tylko w Excelu 365 i Excelu 2021. W starszych wersjach, gdzie ta funkcja nie jest obsługiwana, pojawia się błąd #NAME?

    #Błąd: coś blokuje zasięg rozlewu

    Jeśli jedna lub więcej komórek w zakresie rozlanym nie jest całkowicie pusta lub scalona, wyświetlany jest błąd #SPILL! Aby go naprawić, wystarczy usunąć blokadę. Więcej informacji znajdziesz w artykule Excel #SPILL! błąd - co oznacza i jak naprawić.

    #Błąd: nieprawidłowe argumenty

    Kiedykolwiek napotkasz błąd #VALUE!, sprawdź sort_index oraz sortowanie_order argumenty. Sort_index nie powinna przekraczać liczby kolumn to macierz oraz sortowanie_order powinna wynosić 1 (rosnąco) lub -1 (malejąco).

    Błąd #REF: źródłowy skoroszyt jest zamknięty

    Ponieważ tablice dynamiczne mają ograniczone wsparcie dla odwołań między skoroszytami, funkcja SORT wymaga, aby oba pliki były otwarte. Jeśli źródłowy skoroszyt jest zamknięty, formuła wyrzuci błąd #REF! Aby go naprawić, wystarczy otworzyć plik, do którego się odwołujemy.

    Tak wygląda sortowanie danych w Excelu za pomocą formuły. Dziękuję za przeczytanie i mam nadzieję, że zobaczymy się na naszym blogu za tydzień!

    Zeszyt ćwiczeń do pobrania

    Sortowanie w Excelu za pomocą formuł (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.