Kako odstraniti besedilo ali številke iz celice programa Excel

  • Deliti To
Michael Brown

V tem vodniku se boste naučili, kako v Excelu ločiti besedilo od številk z uporabo izvirnih formul in funkcij po meri. Naučili se boste tudi, kako razdeliti besedilo in številke v dva ločena stolpca.

Predstavljajte si naslednje: za analizo prejmete neobdelane podatke in ugotovite, da so številke pomešane z besedilom v enem stolpcu. V večini primerov bo gotovo bolj priročno, če jih boste imeli v ločenih stolpcih za podrobnejši pregled.

Če delate s homogenimi podatki, bi verjetno lahko uporabili funkcije LEFT, RIGHT in MID, da bi pridobili enako število znakov z istega mesta. Vendar je to idealen scenarij za laboratorijske teste. V resničnem življenju imate najverjetneje opravka z različnimi podatki, kjer so številke pred besedilom, za besedilom ali med besedilom. Spodnji primeri ponujajo rešitve za to.primer.

    Kako odstraniti besedilo in ohraniti številke v celicah programa Excel

    Rešitev deluje v programih Excel 365, Excel 2021 in Excel 2019

    Microsoft Excel 2019 je uvedel nekaj novih funkcij, ki niso na voljo v prejšnjih različicah, in eno od teh funkcij, in sicer TEXTJOIN, bomo uporabili za odstranjevanje besedilnih znakov iz celice, ki vsebuje številke.

    Splošna formula je:

    TEXTJOIN("", TRUE, IFERROR(MID( celica , ROW(INDIRECT("1:"&LEN( celica ))), 1) *1, ""))

    V Excelu 365 in 2021 bo delovala tudi ta možnost:

    TEXTJOIN("", TRUE, IFERROR(MID( celica , ZAPOREDJE(LEN( celica )), 1) *1, ""))

    Na prvi pogled so formule morda videti nekoliko zastrašujoče, vendar delujejo :)

    Če želite na primer odstraniti besedilo iz številk v A2, vnesite eno od spodnjih formul v B2 in jo nato kopirajte v poljubno število celic.

    V Excelu 365 - 2019:

    =TEXTJOIN("", TRUE, IFERROR(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1) *1, ""))

    V Excelu 2019 ga je treba vnesti kot formulo za polje s kombinacijo tipk Ctrl + Shift + Enter . V Excelu z dinamičnim poljem deluje kot običajna formula, ki se zaključi s tipko Enter.

    V Excelu 365 in 2021:

    =TEXTJOIN("", TRUE, IFERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1, ""))

    Tako se iz celice odstranijo vsi besedilni znaki, številke pa ostanejo:

    Kako deluje ta formula:

    Da bi bolje razumeli logiko, začnimo preučevati formulo od znotraj:

    Uporabite ROW(INDIRECT("1:"&LEN(string))) ali SEQUENCE(LEN(string)), da ustvarite zaporedje številk, ki ustreza skupnemu številu znakov v izvornem nizu, in nato ta zaporedna števila podate funkciji MID kot začetna števila. V B2 je ta del formule videti takole:

    MID(A2, {1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}, 1)

    Funkcija MID izvleče vsak znak iz A2, začenši s prvim, in ga vrne v obliki polja:

    {"2";"1";"0";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}

    To polje se pomnoži z 1. Številčne vrednosti ostanejo nespremenjene, medtem ko pomnoževanje neštevilčnega znaka povzroči napako #VALUE!:

    {2;1;0;#VREDNOST!;#VREDNOST!;#VREDNOST!;#VREDNOST!;#VREDNOST!;#VREDNOST!;#VREDNOST!;#VREDNOST!;#VREDNOST!;#VREDNOST!;#VREDNOST!;#VREDNOST!}

    Funkcija IFERROR obravnava te napake in jih nadomesti s praznimi nizi:

    {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""}

    To končno polje se posreduje funkciji TEXTJOIN, ki združi neprazne vrednosti v polju ( ignore_empty argument je nastavljen na TRUE), pri čemer se za ločilo uporabi prazen niz (""):

    TEXTJOIN("", TRUE, {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""})

    Nasvet. Za Excel 2016 - 2007 prav tako obstaja rešitev, vendar je formula veliko bolj zapletena. Najdete jo v tem priročniku: Kako izpisati številke v Excelu.

    Funkcija po meri za odstranjevanje besedila iz številk

    Rešitev deluje za vse različice programa Excel

    Če uporabljate starejšo različico programa Excel ali se vam zdijo zgornje formule pretežke za pomnjenje, vam nič ne preprečuje, da ustvarite svojo funkcijo z enostavnejšo sintakso in uporabniku prijaznim imenom, kot je OdstraniTekst Uporabniško definirano funkcijo (UDF) lahko zapišete na dva načina:

    Koda VBA 1:

    V tem primeru vsak znak v izvornem nizu po vrsti pregledamo in preverimo, ali je številski ali ne. Če je številski, se znak doda v dobljeni niz.

    Funkcija RemoveText(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If True = IsNumeric(Mid(str, i, 1)) Then sRes = sRes & Mid(str, i, 1) End If Next i RemoveText = sRes End Function

    Koda VBA 2:

    Koda ustvari predmet za obdelavo regularnega izraza. Z uporabo RegExp iz izvornega niza odstranimo vse znake razen številk 0-9.

    Funkcija RemoveText(str As String ) As String With CreateObject ("VBScript.RegExp" ) .Global = True .Pattern = "[^0-9]" RemoveText = .Replace(str, "" ) End With End Function

    Na majhnih delovnih listih bosta obe kodi delovali enako dobro. Na velikih delovnih listih, kjer je funkcija klicana stokrat ali tisočkrat, bo koda 2, ki uporablja VBScript.RegExp, delovala hitreje.

    Podrobne korake za vstavljanje kode v delovni zvezek najdete tukaj: Kako vstaviti kodo VBA v Excel.

    Ne glede na izbrani pristop je funkcija brisanja besedila in puščanja številk z vidika končnega uporabnika zelo preprosta:

    OdstraniTekst (niz)

    Če želite na primer iz celice A2 odstraniti neštevilčne znake, je formula v celici B2 naslednja:

    =Odstrani besedilo (A2)

    Preprosto ga kopirajte v stolpec in dobili boste ta rezultat:

    Opomba: Tako izvirne formule kot funkcija po meri izpisujejo a številski niz Če jo želite spremeniti v število, rezultat pomnožite z 1, dodajte ničlo ali pa formulo zavijte v funkcijo VALUE:

    =Odstranitev besedila (A2) + 0

    =VALUE (Odstrani besedilo (A2))

    Kako odstraniti številke iz besedilnega niza v Excelu

    Rešitev deluje v programih Excel 365, Excel 2021 in Excel 2019

    Formule za odstranjevanje številk iz alfanumeričnega niza so precej podobne tistim iz prejšnjega primera.

    Za Excel 365 - 2019:

    TEXTJOIN("", TRUE, IF(ISERR(MID( celica , ROW(INDIRECT("1:"&LEN( celica ) )), 1) *1), MID( celica , ROW(INDIRECT("1:"&LEN( celica ))), 1), ""))

    V Excelu 2019 ne pozabite, da je to formula polja s pritiskom tipk Ctrl + Shift + Enter.

    Za Excel 365 in 2021:

    TEXTJOIN("", TRUE, IF(ISERROR(MID( celica , ZAPOREDJE(LEN( celica 1) *1), MID( celica , ZAPOREDJE(LEN( celica )), 1), ""))

    Če želite na primer iz niza v A2 odstraniti številke, je formula naslednja:

    =TEXTJOIN("", TRUE, IF(ISERR(MID(A2, ROW(INDIRECT("1:"&LEN(A2) )), 1) *1), MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1), ""))

    Ali

    =TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), "")))

    Posledično se iz celice odstranijo vse številke, ohranijo pa se besedilni znaki:

    Kot je prikazano na zgornji sliki zaslona, formula odstrani številske znake s katerega koli mesta v nizu: na začetku, na koncu in na sredini. Vendar obstaja pridržek: če niz se začne s številko, ki ji sledi presledek. , se ta presledek ohrani, kar povzroča težave z vodilnimi presledki (kot v B2).

    Če se želite znebiti dodatnih presledki pred besedilom , formulo zavijte v funkcijo TRIM, kot sledi:

    =TRIM(TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), ""))))

    Vaši rezultati so popolnoma popolni!

    Kako deluje ta formula:

    V bistvu formula deluje enako, kot je razloženo v prejšnjem primeru. Razlika je v tem, da je treba iz končnega polja, ki se servira v funkcijo TEXTJOIN, odstraniti številke in ne besedila. Za to uporabimo kombinacijo funkcij IF in ISERROR.

    Kot se spomnite, MID(...)+0 ustvari polje številk in napak #VALUE!, ki predstavljajo besedilne znake na istih mestih:

    {2;1;0;#VREDNOST!;#VREDNOST!;#VREDNOST!;#VREDNOST!;#VREDNOST!;#VREDNOST!;#VREDNOST!;#VREDNOST!;#VREDNOST!;#VREDNOST!;#VREDNOST!;#VREDNOST!}

    Funkcija ISERROR zajame napake in nastalo polje logičnih vrednosti posreduje funkciji IF:

    {FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE}

    Ko funkcija IF vidi TRUE (napako), s pomočjo druge funkcije MID vstavi ustrezen besedilni znak v obdelano polje. Ko funkcija IF vidi FALSE (število), ga nadomesti s praznim nizom:

    {"";"";"";" "; "S"; "u"; "n"; "s"; "e"; "t";" "; "R"; "o"; "a"; "d"}

    To končno polje se posreduje TEXTJOIN-u, ki združi znake besedila in izpiše rezultat.

    Funkcija po meri za odstranjevanje številk iz besedila

    Rešitev deluje za vse različice programa Excel

    Glede na to, da mora biti zanesljiva formula preprosta, bom delil kodo uporabniško definirane funkcije (UDF), ki odstrani vse številske znake.

    Koda VBA 1:

    Funkcija RemoveNumbers(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If False = IsNumeric(Mid(str, i, 1)) Then sRes = sRes & Mid(str, i, 1) End If Next i RemoveNumbers = sRes End Function

    Koda VBA 2:

    Funkcija RemoveNumbers(str As String ) As String With CreateObject ("VBScript.RegExp" ) .Global = True .Pattern = "[0-9]" RemoveNumbers2 = .Replace(str, "" ) End With End Function

    Tako kot v primeru funkcije RemoveText je tudi drugo kodo bolje uporabiti v velikih delovnih listih, da se optimizira delovanje.

    Ko je koda dodana v delovni zvezek, lahko s to funkcijo po meri odstranite vse številske znake iz celice:

    RemoveNumbers(niz)

    V našem primeru je formula v B2 naslednja:

    =Odstranjevanje številk(A2)

    Če želite obrezati morebitne začetne presledke, vnesite funkcijo po meri v funkcijo TRIM, kot bi jo vnesli v izvirno formulo:

    =TRIM(Odstrani številke(A2))

    Razdelitev številk in besedila v ločene stolpce

    Kadar želite ločiti besedilo in številke v dva stolpca, bi bilo lepo, če bi to opravili z eno samo formulo, se strinjate? V ta namen preprosto združimo kodo OdstraniTekst in . RemoveNumbers funkcije v eno funkcijo z imenom SplitTextNumbers ali preprosto Split ali karkoli želite :)

    Koda VBA 1:

    Funkcija SplitTextNumbers(str As String , is_remove_text As Boolean ) As String Dim sNum, sText, sChar As String sCurChar = sNum = sText = "" For i = 1 To Len(str) sCurChar = Mid(str, i, 1) If True = IsNumeric(sCurChar) Then sNum = sNum &; sCurChar Else sText = sText &; sCurChar End If Next i If True = is_remove_text Then SplitTextNumbers = sNum Else SplitTextNumbers = sText End If End EndFunkcija

    Koda VBA 2:

    Funkcija SplitTextNumbers(str As String , is_remove_text As Boolean ) As String With CreateObject ("VBScript.RegExp" ) .Global = True If True = is_remove_text Then .Pattern = "[^0-9]" Else .Pattern = "[0-9]" End If SplitTextNumbers = .Replace(str, "" ) End With End Function

    Naša nova funkcija po meri zahteva dva argumenta:

    SplitTextNumbers(string, is_remove_text)

    Kje: is_remove_text je logična vrednost, ki označuje, katere znake je treba odstraniti:

    • TRUE ali 1 - odstranite besedilo in ohranite številke
    • FALSE ali 0 - odstranite številke in ohranite besedilo

    Za naš vzorčni nabor podatkov so formule v tej obliki:

    Odstranjevanje neštevilnih znakov:

    =SplitTextNumbers(A2, TRUE)

    Brisanje številskih znakov:

    =SplitTextNumbers(A2, FALSE)

    Nasvet: Da bi se izognili morebitnim težavam z vodilnimi presledki, priporočam, da formulo, ki odstranjuje številke, vedno zavijete v funkcijo TRIM:

    =TRIM(SplitTextNumbers(A2, FALSE))

    Posebno orodje za odstranjevanje številk ali besedila

    Za tiste, ki ne marate po nepotrebnem zapletati stvari, bom prikazal naš lasten način odstranjevanja besedila ali številk v Excelu.

    Ob predpostavki, da je naš paket Ultimate Suite dodan na trak programa Excel, naredite naslednje:

    1. Na Podatkovni zapisi o napravah Ablebits v zavihku Besedilo skupino, kliknite Odstranite > Odstranjevanje znakov .

  • V podoknu dodatka izberite območje vira, izberite Odstranjevanje naborov znakov in izberite možnost Besedilo znaki ali Številčno znaki na spustnem seznamu.
  • Hit Odstranite in uživajte v rezultatu :)
  • Nasvet. Če rezultati vsebujejo nekaj začetnih presledkov, jih boste z orodjem za obrezovanje presledkov v trenutku odpravili.

    To je način odstranjevanja besedilnih ali številskih znakov iz niza v Excelu. Zahvaljujem se vam za branje in se veselim, da se naslednji teden vidimo na našem blogu!

    Razpoložljivi prenosi

    Odstranjevanje besedila ali številk v Excelu - primeri (.xlsm datoteka)

    Ultimate Suite - preizkusna različica (.exe datoteka)

    Michael Brown je predan tehnološki navdušenec s strastjo do poenostavljanja kompleksnih procesov z uporabo programskih orodij. Z več kot desetletnimi izkušnjami v tehnološki industriji je svoje veščine izpopolnil v Microsoft Excelu in Outlooku ter Google Preglednicah in Dokumentih. Michaelov blog je namenjen deljenju svojega znanja in strokovnega znanja z drugimi ter ponuja preproste nasvete in vadnice za izboljšanje produktivnosti in učinkovitosti. Ne glede na to, ali ste izkušen strokovnjak ali začetnik, Michaelov blog ponuja dragocene vpoglede in praktične nasvete, kako kar najbolje izkoristiti ta osnovna programska orodja.