Sadržaj
Vodič pokazuje kako izdvojiti broj iz različitih tekstualnih nizova u Excelu koristeći formule i alat za izdvajanje.
Kada je u pitanju izdvajanje dijela tekstualnog niza određene dužine , Excel pruža tri funkcije podniza (lijevo, desno i srednje) za brzo rješavanje zadatka. Kada je u pitanju izdvajanje brojeva iz alfanumeričkog niza, Microsoft Excel ne pruža... ništa.
Da biste dobili broj iz niza u Excelu, potrebno je malo domišljatosti, malo strpljenja i hrpa različitih funkcija ugniježđene jedna u drugu. Ili, možete pokrenuti alat Extract i obaviti posao jednim klikom miša. Ispod ćete pronaći sve detalje o obje metode.
Kako izdvojiti broj s kraja tekstualnog niza
Kada imate kolonu alfanumeričkih nizova gdje broj dolazi iza teksta, možete koristiti sljedeću formulu da ga dobijete.
DESNO( ćelija, LEN( ćelija) - MAX(IF(ISNUMBER(MID( ćelija<2)>, ROW(INDIRECT("1:"&LEN( ćelija ))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN( ćelija ))), 0)))Na logici formule ćemo se zadržati malo kasnije. Za sada, jednostavno zamijenite cell referencom na ćeliju koja sadrži originalni niz (A2 u našem slučaju) i unesite formulu u bilo koju praznu ćeliju u istom redu, recimo u B2:
=RIGHT(A2, LEN(A2) - MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0)))
Ova formula dobiva broj samo od kraja. Ako niz također ima brojeve na početku ili u sredini, to jesuzanemareno:
Izvlačenje se vrši pomoću DESNE funkcije koja pripada kategoriji tekstualnih funkcija. Izlaz ove funkcije je uvijek tekst . U našem slučaju, rezultat je numerički podniz , koji je u Excelu također tekst, a ne broj.
Ako vam je potreban rezultat da bude broj (koje možete koristiti u daljim proračunima), zatim umotajte formulu u funkciju VALUE ili izvršite aritmetičku operaciju koja ne mijenja rezultat, recimo, pomnožite sa 1 ili dodajte 0. Da biste uhvatili greške u nizovima koji ne sadrže jedan broj, koristite funkciju IFERROR. Na primjer:
=IFERROR(VALUE(RIGHT(A2, LEN(A2) - MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1)*1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0)))), "")
ili
=IFERROR(RIGHT(A2, LEN(A2) - MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0))) +0, "")
Napomena. U Dynamic Array Excel (Office 365 i 2021) formulu unosite na uobičajen način pomoću tipke Enter. U programu Excel 2019 i ranijim verzijama radi samo kao formula niza, pa ne zaboravite da pritisnete Ctrl + Shift + Enter da biste je dovršili.
Kako ova formula funkcionira:
Da biste izdvojili broj iz alfanumeričkog niza, prva stvar koju trebate znati je gdje započeti ekstrakciju. Položaj posljednjeg nenumeričkog znaka u nizu određuje se uz pomoć ove lukave formule:
MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN( A2))), 1)*1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0))
Da bismo razumjeli logiku, hajde da je istražimo iznutra :
Kombinacija ROW(INDIRECT("1:"&LEN(A2)))kreira niz brojeva koji odgovara ukupnom broju znakova u izvornom nizu (A2), a mi serviramo ove sekvencijalne brojeve MID-u kao početne brojeve:
MID(A2, {1;2;3;4 ;5;6;7;8}, 1)
Funkcija MID povlači svaki pojedinačni znak iz A2 i vraća ih kao niz:
{"0";"5";" -";"E";"C";"-";"0";"1"}
Kako je MID tekstualna funkcija, njen izlaz je uvijek tekst (kao što možete primijetiti, svi znakovi nalaze se pod navodnicima). Da pretvorimo numeričke jedinice u brojeve, množimo niz sa 1 (dvostruka negacija --MID() će imati isti efekat). Rezultat ove operacije je niz brojeva i #VRIJEDNOST! greške koje predstavljaju nenumeričke znakove:
ISNUMBER({0;5;#VALUE!;#VALUE!;#VALUE!;#VALUE!;0;1})
Funkcija ISNUMBER procjenjuje svaki element niza i daje svoju presudu u obliku Booleovih vrijednosti - TRUE za brojeve, FALSE za sve ostalo:
{TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE}
Ovaj niz ide na logički test funkcije IF, gdje se svaki element niza upoređuje sa FALSE:
IF({TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE ;TRUE}=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0)
Za svaki FALSE (nenumerička vrijednost), druga ROW(INDIRECT()) funkcija vraća njegov relativni položaj u nizu. Za svaku TRUE (numeričku vrijednost), vraća se nula. Rezultirajući niz izgleda kaoslijedi:
{0;0;3;4;5;6;0;0}
Ostalo je lako. Funkcija MAX pronalazi najveći broj u gornjem nizu, što je pozicija posljednje nenumeričke vrijednosti u nizu (6 u našem slučaju). Jednostavno, oduzmite tu poziciju od ukupne dužine niza koji vraća LEN i proslijedite rezultat u DESNO da zna koliko znakova treba izdvojiti s desne strane niza:
RIGHT(A2, LEN (A2) - 6)
Gotovo!
Kako izdvojiti broj sa početka tekstualnog niza
Ako radite sa zapisima u kojima se tekst pojavljuje iza broja, možete izdvojiti broj sa početka niza koristeći ovu generičku formulu:
LEFT( ćelija , MATCH(FALSE, ISNUMBER(MID( cell , ROW(INDIRECT("1: "&LEN( ćelija )+1)), 1) *1), 0) -1)Sa originalnim nizom u A2, koristite sljedeću formulu da dobijete broj:
=LEFT(A2, MATCH(FALSE, ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2)+1)), 1) *1), 0) -1)
Bez obzira na to koliko je cifara u sredini ili na kraju, izdvaja se samo početni broj:
Napomena. U Excel 365 i Excel 2021, zbog podrške za dinamičke nizove, obična formula radi dobro. U programu Excel 2019 i ranijim verzijama, trebali biste pritisnuti Ctrl + Shift + Enter da izričito napravite formulu niza .
Kako ova formula funkcionira:
Ovdje ponovo koristimo kombinaciju funkcija ROW, INDIRECT i LEN da kreiramo niz brojeva jednak ukupnom broju znakova u izvornom nizu plus 1 (uloga togdodatni znak će postati jasni malo kasnije).
ROW(INDIRECT("1:"&LEN(A2)+1))
MID i ISNUMBER rade isti posao kao u prethodni primjer - MID povlači pojedinačne znakove i ISNUMBER ih pretvara u logičke vrijednosti. Rezultirajući niz TRUE i FALSE ide u funkciju MATCH kao niz za traženje:
MATCH(FALSE, {TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;FALSE}, 0)
MATCH izračunava relativnu poziciju prvog FALSE, dajući nam poziciju prvog nenumeričkog znaka u nizu (3 u A2). Da bismo izdvojili prethodne brojeve, oduzimamo 1 od pozicije prvog znakova teksta i služimo razliku argumentu num_chars argumentu LEFT funkcije:
LEFT(A2, 3-1)
Sada se vratite na "dodatni" znak u nizu koji je generirao ROW(INDIRECT()+1)). Kao što već znate, ovaj niz pruža početne tačke za MID funkciju. Bez +1, MID bi izdvojio tačno onoliko znakova koliko ih ima u originalnom nizu. Ako niz sadrži samo brojeve, ISNUMBER će vratiti samo TRUE dok MATCH treba barem jedan FALSE. Da bismo to osigurali, ukupnoj dužini stringa dodajemo još jedan znak, koji bi MID funkcija pretvorila u prazan string. Na primjer, u B7, MID vraća ovaj niz:
{"1";"2";"3";"4";""}
Napomena. Kao što je slučaj sa funkcijom RIGHT, LEFT također vraća numeričkisubstring , koji je tehnički tekst, a ne broj. Da biste dobili rezultat kao broj, a ne kao numerički niz, ugniježdite formulu u funkciju VALUE ili pomnožite rezultat sa 1 kao što je prikazano u prvom primjeru.
Kako dobiti broj iz bilo koje pozicije u nizu
Ako vaš zadatak podrazumijeva izdvajanje broja iz bilo kojeg mjesta u nizu, možete koristiti sljedeću zapanjujuću formulu objavljenu na MrExcel forumu:
=SUMPRODUCT(MID(0&A2, LARGE(INDEX(ISNUMBER(--MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1)) * ROW(INDIRECT("1:"&LEN(A2))), 0), ROW(INDIRECT("1:"&LEN(A2))))+1, 1) * 10^ROW(INDIRECT("1:"&LEN(A2)))/10)
Gdje je A2 originalni tekstualni niz.
Razbijanje ove formule zahtijeva poseban članak, tako da ga možete jednostavno kopirati na svoj radni list kako biste bili sigurni da zaista funkcionira :)
Međutim, nakon ispitivanja rezultata, možete primijetiti jedan beznačajan nedostatak - ako izvorni niz ne sadrži broj, formula vraća nulu, kao u redu 6 na slici iznad. Da biste to popravili, možete umotati formulu u IF naredbu, čiji logički test provjerava sadrži li izvorni niz bilo koji broj. Ako se to dogodi, formula izdvaja broj, u suprotnom vraća prazan niz:
=IF(SUM(LEN(A2)-LEN(SUBSTITUTE(A2, {"0","1","2","3","4","5","6","7","8","9"}, "")))>0, SUMPRODUCT(MID(0&A2, LARGE(INDEX(ISNUMBER(--MID(A2,ROW(INDIRECT("$1:$"&LEN(A2))),1))* ROW(INDIRECT("$1:$"&LEN(A2))),0), ROW(INDIRECT("$1:$"&LEN(A2))))+1,1) * 10^ROW(INDIRECT("$1:$"&LEN(A2)))/10),"")
Kao što je prikazano na snimku ekrana ispod, poboljšana formula radi prekrasno (svaka čast Alexu, našem Excel guruu, za ovo poboljšanje):
Za razliku od svih prethodnih primjera, rezultat ove formule je broj . Da biste bili sigurni u ovo, samo primijetite desno poravnate vrijednosti u koloni B i skraćene vodeće nule.
Savjet. U programu Excel 365 -Excel 2019, postoji mnogo jednostavnije rješenje uz pomoć funkcije TEXTJOIN. Molimo pogledajte Kako ukloniti tekst i zadržati brojeve.
Izdvoji broj iz tekstualnog niza sa Ultimate Suite
Kao što ste upravo vidjeli, ne postoji trivijalna Excel formula za izvlačenje broja iz tekstualnog niza. Ako imate poteškoća s razumijevanjem formula ili njihovim podešavanjem za svoje skupove podataka, možda će vam se svidjeti ovaj jednostavan način da dobijete broj iz niza u Excelu.
S našim Ultimate Suite dodatim na vašu Excel traku, ovako možete može brzo dohvatiti broj iz bilo kojeg alfanumeričkog niza:
- Idite na karticu Ablebits Data karticu > Text grupu i kliknite na Izdvoji :
- Izaberite sve ćelije sa izvornim nizovima.
- U oknu alata za izdvajanje, izaberite radio dugme Izdvoji brojeve .
- U zavisnosti od toga da li želite da rezultati budu formule ili vrijednosti, odaberite okvir Umetni kao formulu ili ga ostavite neodabranim (podrazumevano).
Moj savjet je da odaberete ovaj okvir ako želite da se izdvojeni brojevi ažuriraju automatski čim se izvrše bilo kakve promjene u izvornim nizovima. Ako želite da rezultati budu nezavisni od originalnih stringova (npr. u slučaju da kasnije planirate ukloniti izvorne podatke), nemojte odabrati ovaj okvir.
- Kliknite na dugme Umetni rezultate . Gotovo!
Kao u prethodnom primjeru, rezultatiekstrakcija su brojevi , što znači da možete slobodno brojati, zbrajati, prosječiti ili izvoditi bilo koje druge proračune s njima.
U ovom primjeru, odabrali smo da ubacimo rezultate kao vrijednosti , a dodatak je uradio upravo ono što je traženo:
Ako je označeno polje za potvrdu Umetni kao formulu , d posmatrajte formulu u traci formule. Zanima vas koji? Samo preuzmite probnu verziju Ultimate Suite-a i uvjerite se sami :)
Dostupna preuzimanja
Excel Extract Number - primjer radne knjige (.xlsx datoteka)
Ultimate Suite - probna verzija (.exe fajl)