Cuprins
Astăzi vom examina îndeaproape sintaxa și utilizările tipice ale noii funcții SORTBY a matricei dinamice. Veți învăța cum să personalizați sortarea în Excel cu o formulă, să sortați aleatoriu o listă, să aranjați celulele în funcție de lungimea textului și multe altele.
Microsoft Excel oferă o serie de modalități de a aranja datele text în ordine alfabetică, datele în ordine cronologică și numerele de la cel mai mic la cel mai mare sau de la cel mai mare la cel mai mic. Există, de asemenea, o modalitate de a sorta după propriile liste personalizate. Pe lângă funcționalitatea convențională de sortare, Excel 365 introduce o modalitate complet nouă de a sorta datele cu ajutorul formulelor - foarte convenabilă și incredibil de simplu de utilizat!
Funcția Excel SORTBY
Funcția SORTBY din Excel este concepută pentru a sorta un interval sau un tablou pe baza valorilor dintr-un alt interval sau tablou. Sortarea se poate face după una sau mai multe coloane.
SORTBY este una dintre cele șase noi funcții de matrice dinamică disponibile în Excel pentru Microsoft 365 și Excel 2021. Rezultatul său este o matrice dinamică care se revarsă în celulele învecinate și se actualizează automat atunci când datele sursă se modifică.
Funcția SORTBY are un număr variabil de argumente - primele două sunt obligatorii, iar celelalte sunt opționale:
SORTBY(array, by_array1, [sort_order1], [by_array2, sort_order2],...)Array (obligatoriu) - intervalul de celule sau matricea de valori care urmează să fie sortate.
Prin_array1 (obligatoriu) - intervalul sau matricea după care se face sortarea.
Sortare_ordine1 (opțional) - ordinea de sortare:
- 1 sau omis (implicit) - crescător
- -1 - descrescător
Prin_array2 / Sort_order2 , ... (opțional) - perechi suplimentare de tablouri/ordine care urmează să fie utilizate pentru sortare.
Notă importantă! În prezent, funcția SORTBY este disponibilă numai cu abonamentele Microsoft 365 și Excel 2021. În Excel 2019, Excel 2016 și versiunile anterioare, funcția SORTBY nu este disponibilă.
Funcția SORTBY - 4 lucruri de reținut
Pentru ca o formulă Excel SORTBY să funcționeze corect, trebuie să țineți cont de câteva aspecte importante:
- Prin_array argumentele trebuie să aibă fie un rând de înălțime, fie o coloană de lățime.
- The array și toate by_array Argumentele trebuie să aibă dimensiuni compatibile. De exemplu, atunci când sortați după două coloane, array , by_array1 și by_array2 trebuie să aibă același număr de rânduri; în caz contrar, se va produce o eroare #VALUE.
- În cazul în care matricea returnată de SORTBY este rezultatul final (ieșire într-o celulă și nu este transmisă unei alte funcții), Excel creează un interval dinamic de împrăștiere și îl populează cu rezultatele. Așadar, asigurați-vă că aveți suficiente celule goale în jos și/sau în dreapta celulei în care introduceți formula, altfel veți primi o eroare #SPILL.
- Rezultatele formulelor SORTBY se actualizează automat ori de câte ori se modifică datele sursă. Cu toate acestea, noile intrări care sunt adăugate în afara matricei la care se face referire în formulă nu sunt incluse în rezultate decât dacă se actualizează array Pentru ca matricea la care se face referire să se extindă automat, convertiți intervalul sursă într-un tabel Excel sau creați un interval dinamic numit.
Formula de bază SORTBY în Excel
Iată un scenariu tipic de utilizare a unei formule SORTBY în Excel:
Să presupunem că aveți o listă de proiecte cu numele de proiect Valoare Doriți să sortați proiectele în funcție de valoarea lor pe o foaie separată. Deoarece alți utilizatori nu trebuie să vadă cifrele, ați prefera să nu includeți câmpul Valoare în coloana de rezultate.
Sarcina poate fi îndeplinită cu ușurință cu ajutorul funcției SORTBY, pentru care se furnizează următoarele argumente:
- Array este A2:A10 - din moment ce nu doriți ca Valoare să fie afișată în rezultate, nu o includeți în matrice.
- Prin_array1 este B2:B10 - sortare după Valoare .
- Sortare_ordine1 este -1 - descrescător, adică de la cel mai mare la cel mai mic.
Punând cap la cap argumentele, obținem următoarea formulă:
=SORTBY(A2:B10, B2:B10, -1)
Pentru simplitate, folosim formula pe aceeași foaie - o introducem în D2 și apăsăm tasta Enter. Rezultatele se "revarsă" automat în câte celule sunt necesare (D2:D10 în cazul nostru). Dar, din punct de vedere tehnic, formula se află doar în prima celulă, iar ștergerea ei din D2 va șterge toate rezultatele.
Atunci când este utilizată pe o altă foaie, formula ia următoarea formă:
=SORTBY(Sheet1!A2:A10, Sheet1!B2:B10, -1)
Unde Foaie1 este foaia de lucru care conține datele originale.
Utilizarea funcției SORTBY în Excel - exemple de formule
Mai jos veți găsi alte câteva exemple de utilizare a SORTBY, care sperăm că se vor dovedi utile și utile.
Sortare după mai multe coloane
Formula de bază discutată mai sus sortează datele după o coloană. Dar dacă aveți nevoie să adăugați încă un nivel de sortare?
Presupunând că tabelul nostru de probă are două câmpuri, Stare (coloana B) și Valoare (coloana C) , dorim să sortăm mai întâi după Stare în ordine alfabetică, apoi în funcție de Valoare descrescător.
Pentru a sorta după două coloane, trebuie doar să adăugăm încă o pereche de by_array / sort_order argumente:
- Array este A2:C10 - de data aceasta, dorim să includem toate cele trei coloane în rezultate.
- Prin_array1 este B2:B10 - mai întâi, sortați după Stare .
- Sortare_ordine1 este 1 - sortați în ordine alfabetică de la A la Z.
- Prin_array2 este C2:C10 - apoi, sortați după Valoare .
- Sort_order2 este -1 - sortați de la cel mai mare la cel mai mic.
Ca rezultat, obținem următoarea formulă:
=SORTBY(A2:B10, B2:B10, 1, C2:C10, -1)
Ceea ce rearanjează datele noastre exact așa cum am instruit:
Sortare personalizată în Excel cu o formulă
Pentru a sorta datele într-o ordine personalizată, puteți utiliza funcția de sortare personalizată a Excel sau puteți construi o formulă SORTBY MATCH în acest mod:
SORTBY(array, MATCH( range_to_sort , lista_personalizată , 0))Dacă vă uitați mai atent la setul nostru de date, veți găsi probabil mai convenabil să sortați proiectele în funcție de statutul lor "logic", de exemplu, în funcție de importanță, decât în ordine alfabetică.
Pentru a face acest lucru, mai întâi creăm o listă personalizată în ordinea de sortare dorită ( În curs de desfășurare , Completat , În așteptare ), tastând fiecare valoare într-o celulă separată din intervalul E2:E4.
Apoi, folosind formula generică de mai sus, furnizăm intervalul sursă pentru array (A2:C10), se va aplica Stare coloană pentru range_to_sort (B2:B10), iar lista personalizată pe care am creat-o pentru lista_personalizată (E2:E4).
=SORTBY(A2:C10, MATCH(B2:B10, E2:E4, 0))
Ca rezultat, avem proiectele sortate în funcție de starea lor exact așa cum este necesar:
Pentru a sorta lista personalizată în ordine inversă, puneți -1 la valoarea sort_order1 argument:
=SORTBY(A2:C10, MATCH(B2:B10, E2:E4, 0), -1)
Și veți avea proiectele ordonate în sens invers:
Doriți să sortați în plus înregistrările în cadrul fiecărui statut? Nici o problemă. Pur și simplu, adăugați încă un nivel de sortare la formulă, de exemplu prin Valoare (C2:C10) și se definește ordinea dorită de sortare, crescătoare în cazul nostru:
=SORTBY(A2:C10, MATCH(B2:B10, E2:E5, 0), 1, C2:C10, 1)
Un mare avantaj al formulei SORTBY față de funcția de sortare personalizată a Excel este că formula se actualizează automat ori de câte ori se modifică datele originale, în timp ce funcția necesită curățare și re-sortare la fiecare modificare.
Cum funcționează această formulă:
După cum am menționat deja, funcția SORTBY din Excel poate procesa numai array-uri "sort by" ale căror dimensiuni sunt compatibile cu array-ul sursă. Deoarece array-ul nostru sursă (C2:C10) conține 9 rânduri, iar lista personalizată (E2:E4) numai 3 rânduri, nu putem să o furnizăm direct către funcția by_array În schimb, folosim funcția MATCH pentru a crea o matrice cu 9 rânduri:
MATCH(B2:B10, E2:E5, 0)
În acest caz, folosim Stare (B2:B10) ca valori de căutare și lista noastră personalizată (E2:E5) ca matrice de căutare. Ultimul argument este setat la 0 pentru a căuta potriviri exacte. Ca rezultat, obținem o matrice de 9 numere, fiecare reprezentând poziția relativă a unei anumite coloane Stare din lista personalizată:
{1;3;2;1;3;2;2;1;2}
Această matrice merge direct la by_array al funcției SORTBY și o obligă să plaseze datele în ordinea corespunzătoare elementelor tabloului, adică primele intrări reprezentate de 1, apoi intrările reprezentate de 2 și așa mai departe.
Sortare aleatorie în Excel cu o formulă
În versiunile anterioare ale Excel, puteți efectua o sortare aleatorie cu funcția RAND, așa cum se explică în acest tutorial: Cum să sortați aleatoriu o listă în Excel.
În noul Excel, puteți utiliza o funcție RANDARRAY mai puternică împreună cu SORTBY:
SORTBY( array , RANDARRAY(ROWS( array )))Unde array reprezintă datele sursă pe care doriți să le amestecați.
Această formulă generică funcționează atât pentru o listă compusă dintr-o singură coloană, cât și pentru un interval cu mai multe coloane.
De exemplu, pentru a sorta aleatoriu o listă în A2:A10, utilizați această formulă:
=SORTBY(A2:A10, RANDARRAY(ROWS(A2:A10)))
Pentru a amesteca datele din A2:C10, păstrând rândurile împreună, utilizați acest lucru:
=SORTBY(A2:C10, RANDARRAY(ROWS(A2:C10)))
Cum funcționează această formulă:
Funcția RANDARRAY produce o matrice de numere aleatoare care va fi utilizată pentru sortare și pe care o treceți în fereastra by_array pentru SORTBY. Pentru a specifica câte numere aleatoare se vor genera, numărați numărul de rânduri din intervalul sursă cu ajutorul funcției ROWS și "introduceți" acest număr în funcția rânduri argumentul lui RANDARRAY. Asta e!
Notă. Ca și predecesoarea sa, RANDARRAY este o funcție volatilă și generează o nouă matrice de numere aleatoare de fiecare dată când foaia de calcul este recalculată. Ca urmare, datele dvs. vor fi recursate la fiecare modificare a foii. Pentru a preveni recursarea automată, puteți utiliza funcția Lipire specială > Valori pentru a înlocui formulele cu valorile lor.
Sortează celulele după lungimea șirului de caractere
Pentru a sorta celulele în funcție de lungimea șirurilor de text pe care le conțin, utilizați funcția LEN pentru a număra numărul de caractere din fiecare celulă și furnizați lungimile calculate la funcția by_array Argumentul SORTBY. sort_order poate fi setat la 1 sau -1, în funcție de ordinea preferată de sortare.
Pentru a sorta șirul de text de la cel mai mic la cel mai mare:
SORTBY(array, LEN(array), 1)Pentru a sorta șirul de text de la cel mai mare la cel mai mic:
SORTBY(array, LEN(array), -1)Și iată o formulă care demonstrează această abordare pe date reale:
=SORTBY(A2:A7, LEN(A2:A7), 1)
Unde A2:A7 sunt celulele originale pe care doriți să le sortați după lungimea textului în ordine crescătoare:
SORTBY vs. SORT
În grupul de noi funcții de matrice dinamică Excel, există două funcții concepute pentru sortare. Mai jos enumerăm cele mai esențiale diferențe și asemănări, precum și când este cel mai bine să fie utilizate fiecare dintre ele.
- Spre deosebire de funcția SORT, SORTBY nu necesită ca array-ul "sort by" să facă parte din array-ul sursă și nici nu trebuie să apară în rezultate. Astfel, atunci când sarcina dvs. este de a sorta un interval pe baza unui alt array independent sau a unei liste personalizate, SORTBY este funcția potrivită. Dacă doriți să sortați un interval pe baza propriilor valori, atunci SORT este mai potrivită.
- Ambele funcții acceptă mai multe niveluri de sortare și ambele pot fi înlănțuite împreună cu alte funcții convenționale și de matrice dinamică.
- Ambele funcții sunt disponibile numai pentru utilizatorii Excel 365 și Excel 2021.
Funcția Excel SORTBY nu funcționează
În cazul în care formula SORTBY returnează o eroare, cel mai probabil se datorează unuia dintre următoarele motive.
Argumente by_array nevalabile
The by_array trebuie să fie un singur rând sau o singură coloană și să aibă o dimensiune compatibilă cu cea a fișierului array De exemplu, dacă array are 10 rânduri, by_array ar trebui să includă și 10 rânduri. În caz contrar, apare o eroare #VALUE!
Argumente invalide sort_order
The sort_order pot fi doar 1 (crescător) sau -1 (descrescător). Dacă nu este setată nicio valoare, SORTBY setează implicit ordinea crescătoare. Dacă este setată orice altă valoare, se trimite o eroare #VALUE!
Nu există suficient spațiu pentru rezultate
La fel ca orice altă funcție de matrice dinamică, SORTBY varsă rezultatele într-un interval automat redimensionabil și actualizabil. Dacă nu există suficiente celule goale pentru a afișa toate valorile, se aruncă o eroare #SPILL!
Cartea de lucru sursă este închisă
Dacă o formulă SORTBY face trimitere la un alt fișier Excel, ambele registre de lucru trebuie să fie deschise. Dacă registrul de lucru sursă este închis, apare o eroare #REF!
Versiunea dvs. de Excel nu acceptă array-uri dinamice
Atunci când este utilizată într-o versiune pre-dinamică a Excel, funcția SORT returnează o eroare #NAME?.
Iată cum se utilizează funcția SORTBY în Excel pentru a face sortare personalizată și alte lucruri. Vă mulțumesc pentru lectură și sper să ne vedem pe blog săptămâna viitoare!
Caietul de practică pentru descărcare
Formulele Excel SORTBY (fișier .xlsx)