Cuprins
Acest tutorial arată cum să utilizați noua funcție TEXTSPLIT pentru a diviza șirurile de caractere în Excel 365 prin orice delimitator pe care îl specificați.
Pot exista diverse situații în care trebuie să divizați celule în Excel. În versiunile anterioare, eram deja dotați cu o serie de instrumente pentru a îndeplini această sarcină, cum ar fi Text to Columns și Fill Flash. Acum, avem și o funcție specială pentru acest lucru, TEXTSPLIT, care poate separa un șir de caractere în mai multe celule pe coloane sau/și rânduri, pe baza parametrilor pe care îi specificați.
Funcția Excel TEXTSPLIT
Funcția TEXTSPLIT din Excel împarte șirurile de text după un delimitator dat pe coloane și/sau rânduri. Rezultatul este o matrice dinamică care se revarsă automat în mai multe celule.
Funcția acceptă până la 6 argumente, dintre care doar primele două sunt necesare.
TEXTSPLIT(text, col_delimitator, [row_delimitator], [ignore_empty], [match_mode], [pad_with])text (obligatoriu) - textul care urmează să fie divizat. Poate fi furnizat sub forma unui șir de caractere sau a unei referințe de celulă.
col_delimitator (obligatoriu) - un caracter (caractere) care indică unde se va împărți textul pe coloane. Dacă este omis, Delimitator_ rând trebuie să fie definite.
Delimitator_ rând (opțional) - un caracter (caractere) care indică locul în care trebuie împărțit textul pe rânduri.
ignore_empty (opțional) - specifică dacă se ignoră sau nu valorile goale:
- FALSE (implicit) - creează celule goale pentru delimitatorii consecutivi fără o valoare între ei.
- TRUE - ignoră valorile goale, adică nu creează celule goale pentru doi sau mai mulți delimitatori consecutivi.
match_mode (opțional) - determină sensibilitatea la majuscule și minuscule pentru delimitator. Activat în mod implicit.
- 0 (implicit) - sensibil la majuscule și minuscule
- 1 - nu ține cont de majuscule și minuscule
pad_with (opțional) - o valoare care trebuie utilizată în locul valorilor lipsă în array-urile bidimensionale. Valoarea implicită este o eroare #N/A.
De exemplu, pentru a împărți un șir de text din A2 în mai multe celule folosind o virgulă și un spațiu ca separator, formula este:
=TEXTSPLIT(A2, ", ")
Disponibilitate TEXTSPLIT
Funcția TEXTSPLIT este disponibilă numai în Excel pentru Microsoft 365 (Windows și Mac) și Excel pentru web.
Sfaturi:
- În versiunile Excel în care funcția TEXTSPLIT nu este disponibilă (altele decât Excel 365), puteți utiliza expertul Text to Columns pentru a diviza celulele.
- Pentru a efectua sarcina inversă, adică pentru a uni conținutul mai multor celule într-o singură celulă folosind un anumit delimitator, funcția TEXTJOIN este cea care trebuie utilizată.
Formula de bază TEXTSPLIT pentru a împărți o celulă în Excel
Pentru început, să vedem cum se utilizează o formulă TEXTSPLIT în forma sa cea mai simplă pentru a diviza un șir de text cu un anumit delimitator.
Împărțiți o celulă pe orizontală între coloane
Pentru a împărți conținutul unei anumite celule în mai multe coloane, furnizați o referință la celula care conține șirul original pentru prima ( text ) și delimitatorul care marchează punctul în care ar trebui să aibă loc divizarea pentru cel de-al doilea argument ( col_delimitator ) argument.
De exemplu, pentru a separa șirul de caractere din A2 pe orizontală prin virgulă, formula este:
=TEXTSPLIT(A2, ",")
Pentru delimitator, se utilizează o virgulă între ghilimele duble (",").
Ca urmare, fiecare element separat prin virgulă se află într-o coloană individuală:
Împărțiți o celulă pe verticală între rânduri
Pentru a împărți textul pe mai multe rânduri, cel de-al treilea argument ( Delimitator_ rând ) este locul în care se plasează delimitatorul. Al doilea argument ( col_delimitator ) este omisă în acest caz.
De exemplu, pentru a separa valorile din A2 în rânduri diferite, formula este:
=TEXTSPLIT(A2, ,",",")
Rețineți că, în ambele cazuri, formula este introdusă doar într-o singură celulă (C2). În celulele învecinate, valorile returnate se revarsă automat. Matricea rezultată (care se numește interval de revărsare) este evidențiată cu o margine albastră, indicând că tot ceea ce se află în interiorul ei este calculat de formula din celula din stânga sus.
Împărțirea textului prin subșiruri
În multe cazuri, valorile din șirul sursă sunt separate de o secvență de caractere, o virgulă și un spațiu fiind un exemplu tipic. Pentru a gestiona acest scenariu, utilizați o subșir pentru delimitator.
De exemplu, pentru a separa textul din A2 în mai multe coloane printr-o virgulă și un spațiu, utilizați șirul ", " pentru col_delimitator .
=TEXTSPLIT(A2, ", ")
Această formulă merge în B2, iar apoi o copiați în jos prin câte celule sunt necesare.
Împărțiți șirul în coloane și rânduri deodată
Pentru a împărți un șir de text în rânduri și coloane, definiți ambii delimitatori în formula TEXTSPLIT.
De exemplu, pentru a împărți șirul de text din A2 pe coloane și rânduri, se furnizează:
- Semnul egal ("=") pentru col_delimitator
- O virgulă și un spațiu (", ") pentru Delimitator_ rând
Formula completă are următoarea formă:
=TEXTSPLIT(A2, "=", ", ")
Rezultatul este o matrice bidimensională formată din 2 coloane și 3 rânduri:
Separarea celulelor prin delimitatori multipli
Pentru a gestiona delimitatori multipli sau inconsecvenți în șirul sursă, utilizați o constantă de tip matrice ca {"x", "y", "z"} pentru argumentul delimitator.
În captura de ecran de mai jos, textul din A2 este delimitat atât prin virgule (","), cât și prin punct și virgulă (";") cu și fără spații. Pentru a împărți șirul pe verticală în rânduri prin toate cele 4 variante ale delimitatorului, formula este:
=TEXTSPLIT(A2, , {",",",", ",";",",";"})
Sau, puteți include în matrice doar o virgulă (",") și punct și virgulă (";"), iar apoi puteți elimina spațiile suplimentare cu ajutorul funcției TRIM:
=TRIM(TEXTSPLIT(A2, , {",",";"}))
Split text ignorând valorile goale
În cazul în care șirul conține doi sau mai mulți delimitatori consecutivi fără o valoare între ei, puteți alege dacă să ignorați sau nu aceste valori goale. Acest comportament este controlat de a patra opțiune ignore_empty care are valoarea implicită FALSE.
În mod implicit, funcția TEXTSPLIT nu ignoră valorile goale. Comportamentul implicit funcționează foarte bine pentru datele structurate, așa cum se arată în exemplul de mai jos.
În acest exemplu de tabel, scorurile lipsesc în unele șiruri de caractere. Formula TEXTSPLIT, cu ajutorul parametrilor ignore_empty omis sau setat la FALSE gestionează perfect acest caz, creând o celulă goală pentru fiecare valoare goală.
=TEXTSPLIT(A2, ", ")
Sau
=TEXTSPLIT(A2, ", ", ", FALSE)
Ca urmare, toate valorile apar în coloanele corespunzătoare.
În cazul în care șirurile de caractere conțin date omogene, ar putea fi logic să ignorați valorile goale. În acest scop, setați opțiunea ignore_empty la TRUE sau 1.
De exemplu, pentru a împărți șirurile de mai jos, plasând fiecare abilitate într-o celulă separată fără spații, formula este:
=TEXTSPLIT(A2, ", ", ,TRUE)
În acest caz, valorile lipsă dintre delimitatorii consecutivi sunt complet ignorate:
Divizarea celulelor în funcție de majuscule sau minuscule
Pentru a controla sensibilitatea la majuscule și minuscule a delimitatorului, folosiți al cincilea argument, match_mode .
În mod implicit, match_mode este setat la 0, ceea ce face ca TEXTSPLIT Sensibil la majuscule și minuscule .
În acest exemplu, numerele sunt separate de literele "x" minuscul și "X" majuscul.
Formula cu sensibilitatea implicită la majuscule acceptă doar "x" minuscul ca delimitator:
=TEXTSPLIT(A2, " x ")
Vă rugăm să acordați atenție faptului că delimitatorul are un spațiu de ambele părți ale literei " x " pentru a preveni apariția spațiilor de început și de sfârșit în rezultate.
Pentru a dezactiva sensibilitatea la majuscule și minuscule, furnizați 1 pentru match_mode pentru a forța formula TEXTSPLIT să ignore majuscula și minuscula literelor:
=TEXTSPLIT(A2, " x ", , ,1)
Acum, toate șirurile de caractere sunt împărțite corect în funcție de oricare dintre delimitatori:
Introduceți valorile lipsă în matricea 2D
Ultimul argument al funcției TEXTSPLIT, pad_with , vine la îndemână în cazul în care una sau mai multe valori lipsesc din șirul sursă. Atunci când un astfel de șir este împărțit atât în coloane, cât și în rânduri, în mod implicit, Excel returnează erorile #N/A în locul valorilor lipsă pentru a nu manipula structura unui array bidimensional.
În șirul de mai jos, nu există niciun "=" ( col_delimitator ) după "Score". Pentru a păstra integritatea tabloului rezultat, TEXTSPLIT scoate #N/A lângă "Score".
Pentru ca rezultatul să fie mai ușor de utilizat, puteți înlocui eroarea #N/A cu orice valoare doriți. Pur și simplu, introduceți valoarea dorită în câmpul pad_with argument.
În cazul nostru, aceasta ar putea fi o cratimă ("-"):
=TEXTSPLIT(A2, "=", ", ", ", , ,"-")
Sau un șir gol ("""):
=TEXTSPLIT(A2, "=", ", ", ", , , ,"")
Acum că ați învățat utilizările practice ale fiecărui argument al funcției TEXTSPLIT, haideți să discutăm câteva exemple avansate care vă pot ajuta să faceți față provocărilor non-triviale din foile dvs. de calcul Excel.
Împărțiți datele în zi, lună și an
Pentru a împărți o dată în unități individuale, mai întâi trebuie să convertiți data în text, deoarece funcția TEXTSPLIT se ocupă de șiruri de text, în timp ce datele din Excel sunt numere.
Cel mai simplu mod de a converti o valoare numerică în text este prin utilizarea funcției TEXT. Asigurați-vă că furnizați un cod de format adecvat pentru data dvs.
În cazul nostru, formula este:
=TEXT(A2, "m/d/zi/aaaa")
Următorul pas este de a anina funcția de mai sus în primul argument al TEXTSPLIT și de a introduce delimitatorul corespunzător pentru al doilea sau al treilea argument, în funcție de faptul dacă se face o divizare pe coloane sau pe rânduri. În acest exemplu, unitățile de date sunt delimitate cu slash-uri, așa că folosim "/" pentru col_delimitator argument:
=TEXTSPLIT(TEXT(A2, "m/d/aaaa")), "/")
Divizarea celulelor și eliminarea anumitor caractere
Imaginați-vă: ați împărțit un șir lung în bucăți, dar matricea rezultată conține încă unele caractere nedorite, cum ar fi parantezele din captura de ecran de mai jos:
=TEXTSPLIT(A2, " ", "; ")
Pentru a elimina o dată parantezele de deschidere și de închidere, aninați două funcții SUBSTITUTE una în alta (fiecare înlocuind o paranteză cu un șir gol) și utilizați formula TEXTSPLIT pentru funcția text argument al SUBSTITUTE interior:
=SUBSTITUTE(SUBSTITUTE(TEXTSPLIT(A2, " ", " ", "; "), "(", ""), ")", ""), "")
Sfat: Dacă matricea finală conține prea multe caractere în plus, le puteți elimina folosind una dintre metodele descrise în acest articol: Cum să eliminați caracterele nedorite în Excel.
Șiruri de caractere divizate care sar peste anumite valori
Să presupunem că doriți să separați șirurile de mai jos în 4 coloane: Prenume , Numele de familie , Scor , și Rezultat Problema este că unele șiruri de caractere conțin titlul "Mr." sau "Ms.", din cauza cărora rezultatele sunt greșite:
Soluția nu este evidentă, dar este destul de simplă :)
În plus față de delimitatorii existenți, care sunt un spațiu (" ") și o virgulă și un spațiu (", "), includeți șirurile de caractere "Mr. " și "Ms. col_delimitator pentru ca funcția să folosească titlurile în sine pentru a separa textul. Pentru a ignora valorile goale, se setează constanta de matrice ignore_empty la TRUE.
=TEXTSPLIT(A2, {" ",",", ", "Mr. ", "Ms."}, ,TRUE)
Acum, rezultatele sunt absolut perfecte!
Alternative TEXTSPLIT
În versiunile Excel în care funcția TEXTSPLIT nu este acceptată, puteți diviza șiruri de caractere utilizând diferite combinații ale funcției SEARCH / FIND cu LEFT, RIGHT și MID. În special:
- SEARCH insensibil la majuscule și minuscule sau FIND sensibil la majuscule determină poziția delimitatorului în cadrul unui șir de caractere, iar
- Funcțiile LEFT, RIGHT și MID extrag o subșiră înainte, după sau între două exemple de delimitator.
În cazul nostru, pentru a împărți valorile separate prin o virgulă și un spațiu , formulele sunt următoarele.
Pentru a extrage numele:
=LEFT(A2, SEARCH(",", A2, 1) -1)
Pentru a trage scorul:
=MID(A2, SEARCH(",",", A2) + 2, SEARCH(",",", A2, SEARCH(",",A2)+1) - SEARCH(",",", A2) - 2)
Pentru a obține rezultatul:
=RIGHT(A2, LEN(A2) - SEARCH(",", A2, SEARCH(",",", A2) + 1)-1)
Pentru o explicație detaliată a logicii formulelor, consultați Cum se împart șirurile de caractere după caracter sau mască.
Vă rugăm să rețineți că, spre deosebire de funcția TEXTSPLIT din matricea dinamică, aceste formule urmează abordarea tradițională cu o formulă - o celulă. Introduceți formula în prima celulă, apoi trageți-o în josul coloanei pentru a o copia în celulele de mai jos.
Captura de ecran de mai jos arată rezultatele:
Iată cum se împart celulele în Excel 365 folosind TEXTSPLIT sau soluții alternative în versiunile anterioare. Vă mulțumesc pentru lectură și sper să ne revedem pe blog săptămâna viitoare!
Caietul de practică pentru descărcare
Funcția TEXTSPLIT pentru divizarea șirurilor de caractere - exemple de formule (fișier .xlsx)