Kazalo
V učbeniku je prikazano, kako iz različnih besedilnih nizov v Excelu izluščiti število z uporabo formul in orodja Izvleček.
Kadar je treba izločiti del besedilnega niza določene dolžine, Excel ponuja tri funkcije Substring (Left, Right in Mid), ki hitro opravijo nalogo. Kadar je treba izločiti številke iz alfanumeričnega niza, Microsoft Excel ne ponuja... ničesar.
Če želite v Excelu iz niza dobiti številko, potrebujete nekaj iznajdljivosti, potrpežljivosti in več različnih funkcij, ki so vgrajene druga v drugo. Lahko pa zaženete orodje Izvleček in delo opravite z enim klikom miške. V nadaljevanju najdete vse podrobnosti o obeh metodah.
Kako izvleči številko s konca besedilnega niza
Če imate stolpec črkovno-številčnih nizov, v katerem za besedilom sledi številka, lahko uporabite naslednjo formulo.
PRAVICA( celica , LEN( celica ) - MAX(IF(ISNUMBER(MID( celica , ROW(INDIRECT("1:"&LEN( celica ))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN( celica ))), 0)))Logiko formule bomo obravnavali nekoliko pozneje. Za zdaj preprosto zamenjajte celica s sklicevanjem na celico, ki vsebuje izvirni niz (v našem primeru A2), in vnesite formulo v katero koli prazno celico v isti vrstici, na primer v B2:
=PRAVA(A2, LEN(A2) - MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0))))
Ta formula dobi številko samo s konca. Če ima niz številke tudi na začetku ali na sredini, se te ne upoštevajo:
Ekstrakcija se izvede s funkcijo RIGHT, ki sodi v kategorijo funkcij Text. Izhodna vrednost te funkcije je vedno besedilo V našem primeru je rezultat številski podrejeni niz , ki je v Excelu prav tako besedilo in ne številka.
Če želite, da je rezultat številka (ki ga lahko uporabite pri nadaljnjih izračunih), nato pa formulo zapakirajte v funkcijo VALUE ali izvedite aritmetično operacijo, ki ne spremeni rezultata, na primer pomnožite z 1 ali prištejte 0. Če želite ujeti napake v nizih, ki ne vsebujejo enega števila, uporabite funkcijo IFERROR. Na primer:
=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)))), "")
ali
=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, "")
Opomba: V programu Excel z dinamičnim poljem (Office 365 in 2021) formulo vnesete na običajen način s tipko Enter. V programu Excel 2019 in starejših deluje le kot formula polja, zato ne pozabite pritisniti Ctrl + Shift + Enter, da jo dokončate.
Kako deluje ta formula:
Če želite iz alfanumeričnega niza izluščiti številko, morate najprej vedeti, kje začeti izločanje. Položaj zadnjega neštevilskega znaka v nizu določite s pomočjo te zapletene formule:
MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1)*1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0))
Da bi razumeli logiko, jo raziščimo od znotraj:
Kombinacija ROW(INDIRECT("1:"&LEN(A2))) ustvari zaporedje številk, ki ustreza skupnemu številu znakov v izvornem nizu (A2), in te zaporedne številke uporabimo za MID kot začetne številke:
MID(A2, {1;2;3;4;5;6;7;8}, 1)
Funkcija MID iz A2 vzame vsak posamezen znak in ga vrne v obliki polja:
{"0";"5";"-";"E";"C";"-";"0";"1"}
Ker je MID besedilna funkcija, je njen izhod vedno besedilo (kot lahko opazite, so vsi znaki zaprti v narekovajih). Da bi številske enote spremenili v številke, pomnožimo polje z 1 (enak učinek bo imela dvojna negacija --MID()). Rezultat te operacije je polje števil in napak #VALUE!, ki predstavljajo neštevilske znake:
ISNUMBER({0;5;#VREDNOST!;#VREDNOST!;#VREDNOST!;#VREDNOST!;#VREDNOST!;0;1})
Funkcija ISNUMBER oceni vsak element polja in poda svojo odločitev v obliki logičnih vrednosti - TRUE za števila, FALSE za vse drugo:
{TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE}
To polje se pošlje v logični preizkus funkcije IF, kjer se vsak element polja primerja s FALSE:
IF({TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE}=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0)
Za vsako vrednost FALSE (neštevilčna vrednost) funkcija ROW(INDIRECT()) vrne njen relativni položaj v nizu. Za vsako vrednost TRUE (številčna vrednost) se vrne ničla. Nastalo polje je videti takole:
{0;0;3;4;5;6;0;0}
Funkcija MAX poišče najvišje število v zgornjem polju, ki je položaj zadnje neštevilčne vrednosti v nizu (v našem primeru 6). Ta položaj preprosto odštejte od skupne dolžine niza, ki jo vrne funkcija LEN, in rezultat posredujte funkciji RIGHT, da bo vedela, koliko znakov naj izloči z desne strani niza:
DESNO(A2, LEN(A2) - 6)
Končano!
Kako izvleči številko z začetka besedilnega niza
Če delate z zapisi, v katerih se za številko pojavi besedilo, lahko številko izločite z začetka niza z uporabo te splošne formule:
LEVA( celica , MATCH(FALSE, ISNUMBER(MID( celica , ROW(INDIRECT("1:"&LEN( celica )+1)), 1) *1), 0) -1)Z originalnim nizom v A2 dobite število z naslednjo formulo:
=LEFT(A2, MATCH(FALSE, ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2)+1)), 1) *1), 0) -1)
Ne glede na to, koliko številk je na sredini ali koncu, se izloči samo začetna številka:
Opomba: V Excelu 365 in Excelu 2021 zaradi podpore dinamičnim poljem običajna formula deluje dobro. V Excelu 2019 in prejšnjih programih morate pritisniti kombinacijo tipk Ctrl + Shift + Enter, da izrecno spremenite formulo v formula polja .
Kako deluje ta formula:
Tudi v tem primeru uporabimo kombinacijo funkcij ROW, INDIRECT in LEN, da ustvarimo zaporedje številk, ki je enako skupnemu številu znakov v izvornem nizu plus 1 (vloga tega dodatnega znaka bo jasna nekoliko pozneje).
ROW (INDIRECT("1:"&LEN(A2)+1))
MID in ISNUMBER opravljata enako delo kot v prejšnjem primeru - MID pobere posamezne znake, ISNUMBER pa jih pretvori v logične vrednosti. Tako dobljeno polje TRUE in FALSE se pošlje funkciji MATCH kot polje za iskanje:
MATCH(FALSE, {TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;FALSE}, 0)
MATCH izračuna relativni položaj prvega FALSE, s čimer dobimo položaj prvega neštevilskega znaka v nizu (3 v A2). Da bi izluščili predhodne številke, od položaja prvega besedilnega znaka odštejemo 1, razliko pa serviramo v num_chars argumenta funkcije LEFT:
LEVO (A2, 3-1)
Zdaj se vrnimo k "dodatnemu" znaku v zaporedju, ki ga generira ROW(INDIRECT()+1)). Kot že veste, je to zaporedje izhodišče za funkcijo MID. Brez +1 bi MID izvlekel natanko toliko znakov, kot jih je v prvotnem nizu. Če niz vsebuje samo številke, bo ISNUMBER vrnil samo TRUE, MATCH pa potrebuje vsaj en FALSE. To zagotovimo tako, da dodamo enveč znakov do skupne dolžine niza, ki ga funkcija MID pretvori v prazen niz. Na primer, v B7 funkcija MID vrne to polje:
{"1"; "2"; "3"; "4";""}
Opomba: Tako kot funkcija RIGHT tudi funkcija LEFT vrne številski podrejeni niz Če želite rezultat dobiti kot število in ne kot številski niz, vnesite formulo v funkcijo VALUE ali pomnožite rezultat z 1, kot je prikazano v prvem primeru.
Kako dobiti številko iz poljubnega položaja v nizu
Če je vaša naloga povezana s pridobivanjem števila iz poljubnega mesta v nizu, lahko uporabite naslednjo osupljivo formulo, objavljeno na forumu MrExcel:
=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)
Pri čemer je A2 izvirni besedilni niz.
Razčlenitev te formule bi zahtevala poseben članek, zato jo lahko preprosto kopirate v svoj delovni list in se prepričate, da res deluje :)
Pri pregledu rezultatov pa lahko opazite eno nepomembno pomanjkljivost - če izvorni niz ne vsebuje številke, formula vrne ničlo, kot v vrstici 6 na zgornji sliki zaslona. To lahko odpravite tako, da formulo zaprete v izjavo IF, katere logični test preveri, ali izvorni niz vsebuje kakšno številko. Če jo vsebuje, formula izloči številko, sicer vrne prazno vrstico.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),"")
Kot je prikazano na spodnji sliki zaslona, izboljšana formula odlično deluje (za to izboljšavo pohvala našemu guruju programa Excel Alexu):
Za razliko od vseh prejšnjih primerov je rezultat te formule številka Da bi se o tem prepričali, opazite desno poravnane vrednosti v stolpcu B in okrnjene vodilne ničle.
Nasvet: V Excelu 365 - Excelu 2019 obstaja veliko preprostejša rešitev s pomočjo funkcije TEXTJOIN. Oglejte si poglavje Kako odstraniti besedilo in ohraniti številke.
Izvleček številke iz besedilnega niza z Ultimate Suite
Kot ste pravkar videli, v Excelu ni trivialne formule za pridobivanje števila iz besedilnega niza. Če imate težave z razumevanjem formul ali njihovim prilagajanjem za svoje podatkovne nize, vam bo morda všeč ta preprost način za pridobivanje števila iz niza v Excelu.
Z našim paketom Ultimate Suite, dodanim na trak Excel, lahko hitro pridobite številko iz katerega koli alfanumeričnega niza:
- Pojdite na Podatkovni zapisi o napravah Ablebits zavihek> Besedilo in kliknite Izvleček :
- Izberite vse celice z izvornimi nizi.
- V podoknu orodja Izvleček izberite Številke izvlečkov radijski gumb.
- Glede na to, ali želite, da so rezultati formule ali vrednosti, izberite Vstavite kot formulo ali ga pustite neizbranega (privzeto).
Svetujem vam, da to polje izberete, če želite, da se izvlečene številke samodejno posodobijo takoj, ko se v izvornih nizih izvedejo kakršne koli spremembe. Če želite, da so rezultati neodvisni od izvornih nizov (npr. če nameravate pozneje odstraniti izvorne podatke), potem tega polja ne izberite.
- Kliknite na Rezultati vstavljanja gumb. Končano!
Tako kot v prejšnjem primeru so rezultati ekstrakcije naslednji številke , kar pomeni, da lahko z njimi prosto štejete, seštevate, povprečite ali izvajate kakršne koli druge izračune.
V tem primeru smo se odločili, da rezultate vstavimo kot vrednosti in dodatek je naredil točno to, kar je bilo zahtevano:
Če je Vstavite kot formulo je bilo izbrano potrditveno polje, boste opazili formula v vrstici s formulo. Želite vedeti, katera je to? Prenesite preizkusno različico paketa Ultimate Suite in se prepričajte sami :)
Razpoložljivi prenosi
Excel Izvleček števila - vzorčni delovni zvezek (.xlsx datoteka)
Ultimate Suite - preizkusna različica (.exe datoteka)