Kaip pašalinti tekstą arba skaičius iš "Excel" ląstelės

  • Pasidalinti
Michael Brown

Šioje pamokoje sužinosite, kaip "Excel" programoje atskirti tekstą nuo skaičių naudojant vietines formules ir pasirinktines funkcijas. Taip pat sužinosite, kaip padalyti tekstą ir skaičius į du atskirus stulpelius.

Įsivaizduokite: gaunate neapdorotus duomenis analizei ir sužinote, kad viename stulpelyje skaičiai yra sumaišyti su tekstu. Daugeliu atvejų tikrai bus patogiau juos pateikti atskiruose stulpeliuose, kad būtų galima juos atidžiau išnagrinėti.

Jei dirbate su vienarūšiais duomenimis, tikriausiai galėtumėte naudoti LEFT, RIGHT ir MID funkcijas, kad iš tos pačios pozicijos išgautumėte tą patį simbolių skaičių. Tačiau tai idealus scenarijus laboratoriniams tyrimams. Realiame gyvenime greičiausiai susidursite su nevienodais duomenimis, kai skaičiai yra prieš tekstą, po teksto arba tarp teksto. Toliau pateiktuose pavyzdžiuose pateikiami būtent tokie sprendimai.atveju.

    Kaip "Excel" ląstelėse pašalinti tekstą ir išsaugoti skaičius

    Sprendimas veikia "Excel 365", "Excel 2021" ir "Excel 2019".

    "Microsoft Excel 2019" įdiegė keletą naujų funkcijų, kurių nebuvo ankstesnėse versijose, ir mes naudosime vieną iš tokių funkcijų, būtent TEXTJOIN, norėdami pašalinti teksto simbolius iš ląstelės, kurioje yra skaičių.

    Bendroji formulė yra tokia:

    TEXTJOIN("", TRUE, IFERROR(MID( ląstelė , ROW(INDIRECT("1:"&LEN( ląstelė ))), 1) *1, ""))

    Šis veiks ir "Excel 365" bei 2021 programoje:

    TEXTJOIN("", TRUE, IFERROR(MID( ląstelė , SEKA(LEN( ląstelė )), 1) *1, ""))

    Iš pirmo žvilgsnio formulės gali atrodyti šiek tiek bauginančios, tačiau jos tikrai veikia :)

    Pavyzdžiui, norėdami pašalinti tekstą iš skaičių, esančių A2, įveskite vieną iš toliau pateiktų formulių B2 ir nukopijuokite ją į tiek ląstelių, kiek reikia.

    Programoje "Excel 365" - 2019 m:

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

    Programoje "Excel 2019" ji turi būti įvesta kaip masyvo formulė, naudojant Ctrl + Shift + Enter . Programoje "Excel" dinaminis masyvas veikia kaip įprasta formulė, užbaigiama klavišu Enter.

    "Excel 365" ir 2021:

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

    Dėl to iš ląstelės pašalinami visi teksto simboliai, o skaičiai paliekami:

    Kaip veikia ši formulė:

    Kad geriau suprastume logiką, pradėkime nagrinėti formulę iš vidaus:

    Naudodami ROW(INDIRECT("1:"&LEN(string))) arba SEQUENCE(LEN(string)) sukursite skaičių seką, atitinkančią bendrą simbolių skaičių pradinėje eilutėje, ir tada šiuos eilės numerius kaip pradinius numerius pateiksite MID funkcijai. B2 versijoje ši formulės dalis atrodo taip:

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

    Funkcija MID iš A2 ištraukia kiekvieną simbolį, pradedant pačiu pirmuoju, ir grąžina juos kaip masyvą:

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

    Šis masyvas dauginamas iš 1. Skaitmeninės reikšmės išlieka nepakitusios, o dauginant neskaitmeninį simbolį gaunama #VALUE! klaida:

    {2;1;0;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!}

    Funkcija IFERROR tvarko šias klaidas ir pakeičia jas tuščiomis eilutėmis:

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

    Šis galutinis masyvas pateikiamas TEXTJOIN funkcijai, kuri sujungia ne tuščias masyvo reikšmes ( ignore_empty argumentas TRUE), o kaip skiriamąjį ženklą naudokite tuščią eilutę (""):

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

    Patarimas. 2016-2007 m. "Excel" programai taip pat yra sprendimas, tačiau formulė yra kur kas sudėtingesnė. Ją rasite šioje pamokoje: Kaip išgauti skaičius "Excel" programoje.

    Pasirinktinė funkcija, skirta pašalinti tekstą iš skaičių

    Sprendimas tinka visoms "Excel" versijoms

    Jei naudojate senesnę "Excel" versiją arba jums atrodo, kad minėtas formules per sunku įsiminti, niekas netrukdo sukurti savo funkciją su paprastesne sintakse ir patogiu pavadinimu, pvz. RemoveText . Naudotojo apibrėžtą funkciją (UDF) galima užrašyti dviem būdais:

    VBA kodas 1:

    Čia paeiliui peržiūrime kiekvieną pradinės eilutės simbolį ir patikriname, ar jis yra skaitinis, ar ne. Jei jis skaitinis, simbolis pridedamas prie gautos eilutės.

    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

    VBA kodas 2:

    Kodas sukuria objektą reguliariajai išraiškai apdoroti. Naudodami RegExp iš pradinės eilutės pašaliname visus simbolius, išskyrus skaitmenis 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

    Mažuose darbalapiuose abu kodai veiks vienodai gerai. Dideliuose darbalapiuose, kuriuose funkcija iškviečiama šimtus ar tūkstančius kartų, 2 kodas, kuriame naudojamas VBScript.RegExp, veiks greičiau.

    Išsamius kodo įterpimo į darbaknygę žingsnius rasite čia: Kaip įterpti VBA kodą į "Excel".

    Kad ir kokį būdą pasirinktumėte, galutinio naudotojo požiūriu, teksto ištrynimo ir skaičių palikimo funkcija yra labai paprasta:

    RemoveText(eilutė)

    Pavyzdžiui, norint iš ląstelės A2 pašalinti neskaitmeninius simbolius, B2 formulė yra tokia:

    =Pašalinti tekstą(A2)

    Tiesiog nukopijuokite jį į stulpelį ir gausite šį rezultatą:

    Pastaba. Tiek vietinės formulės, tiek pasirinktinė funkcija išveda a skaitmeninė eilutė . Norėdami paversti ją skaičiumi, padauginkite rezultatą iš 1 arba pridėkite nulį, arba formulę įtraukite į funkciją VALUE. Pvz:

    =RemoveText(A2) + 0

    =VALUE(RemoveText(A2))

    Kaip pašalinti skaičius iš teksto eilutės "Excel" programoje

    Sprendimas veikia "Excel 365", "Excel 2021" ir "Excel 2019".

    Formulės, kuriomis iš raidžių ir skaičių eilutės pašalinami skaičiai, yra labai panašios į tas, kurios aptartos ankstesniame pavyzdyje.

    "Excel 365" - 2019 m:

    TEXTJOIN("", TRUE, IF(ISERR(MID( ląstelė , ROW(INDIRECT("1:"&LEN( ląstelė ) )), 1) *1), MID( ląstelė , ROW(INDIRECT("1:"&LEN( ląstelė ))), 1), ""))

    Programoje "Excel 2019" nepamirškite masyvo formulė kartu paspausdami klavišus Ctrl + Shift + Enter.

    "Excel 365" ir 2021:

    TEXTJOIN("", TRUE, IF(ISERROR(MID( ląstelė , SEKA(LEN( ląstelė 1) *1), MID( ląstelė , SEKA(LEN( ląstelė )), 1), ""))

    Pavyzdžiui, jei norite iš A2 eilutės pašalinti skaičius, formulė yra tokia:

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

    Arba

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

    Dėl to iš ląstelės pašalinami visi skaičiai, o teksto simboliai paliekami:

    Kaip parodyta pirmiau pateiktame paveikslėlyje, formulė pašalina skaitmeninius simbolius iš bet kurios eilutės vietos: pradžios, pabaigos ir vidurio. Tačiau yra išlyga: jei eilutė prasideda skaičiumi, po kurio rašomas tarpas. , tas tarpas paliekamas, todėl kyla pradinių tarpų problema (kaip B2).

    Norėdami atsikratyti papildomų tarpai prieš tekstą , formulę į TRIM funkciją įtraukite taip:

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

    Dabar jūsų rezultatai yra visiškai puikūs!

    Kaip veikia ši formulė:

    Iš esmės formulė veikia taip pat, kaip paaiškinta ankstesniame pavyzdyje. Skirtumas tas, kad iš galutinio masyvo, paduodamo funkcijai TEXTJOIN, reikia pašalinti skaičius, o ne tekstą. Kad tai būtų padaryta, naudojame funkcijų IF ir ISERROR derinį.

    Kaip prisimenate, MID(...)+0 generuoja skaičių ir #VALUE! klaidų, žyminčių teksto simbolius tose pačiose pozicijose, masyvą:

    {2;1;0;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!;#VERTĖ!}

    Funkcija ISERROR fiksuoja klaidas ir gautą loginių reikšmių masyvą perduoda funkcijai IF:

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

    Kai funkcija IF mato TRUE (klaidą), ji, naudodama kitą funkciją MID, į apdorotą masyvą įterpia atitinkamą teksto simbolį. Kai funkcija IF mato FALSE (skaičių), ji jį pakeičia tuščia eilute:

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

    Šis galutinis masyvas perduodamas TEXTJOIN, kad jis sujungtų teksto simbolius ir išvestų rezultatą.

    Pasirinktinė funkcija, skirta pašalinti skaičius iš teksto

    Sprendimas tinka visoms "Excel" versijoms

    Atsižvelgdamas į tai, kad patikima formulė turi būti paprasta, pasidalysiu naudotojo apibrėžtos funkcijos (UDF) kodu, kad būtų pašalintas bet koks skaitinis simbolis.

    VBA kodas 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

    VBA kodas 2:

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

    Kaip ir funkcijos RemoveText atveju, antrąjį kodą geriau naudoti dideliuose darbalapiuose, kad būtų optimizuotas našumas.

    Kai kodas bus įtrauktas į sąsiuvinį, naudodami šią pasirinktinę funkciją galėsite iš ląstelės pašalinti visus skaitinius simbolius:

    RemoveNumbers(string)

    Mūsų atveju B2 formulė yra tokia:

    =Pašalinti skaičius(A2)

    Norėdami apkarpyti pradinius tarpus, jei tokių yra, įterpkite pasirinktinę funkciją į TRIM, kaip tai darytumėte gimtojoje formulėje:

    =TRIM(RemoveNumbers(A2))

    Skaičių ir teksto skaidymas į atskirus stulpelius

    Jei norite atskirti tekstą ir skaičius į du stulpelius, būtų gerai, jei šį darbą atliktumėte naudodami vieną formulę, sutinkate? Šiuo tikslu tiesiog sujungiame kodo RemoveText ir RemoveNumbers funkcijas į vieną funkciją, pavadintą SplitTextNumbers arba tiesiog Splitas arba kaip jums patinka :)

    VBA kodas 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 If EndFunkcija

    VBA kodas 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

    Mūsų naujajai pasirinktinei funkcijai reikia dviejų argumentų:

    SplitTextNumbers(string, is_remove_text)

    Kur is_remove_text yra loginė reikšmė, nurodanti, kuriuos simbolius reikia pašalinti:

    • TRUE arba 1 - pašalinkite tekstą ir palikite skaičius
    • FALSE arba 0 - pašalinti skaičius ir palikti tekstą

    Mūsų pavyzdinio duomenų rinkinio formulės yra tokios:

    Norėdami pašalinti neįskaitmeninius simbolius:

    =SplitTextNumbers(A2, TRUE)

    Jei norite ištrinti skaitmeninius simbolius:

    =SplitTextNumbers(A2, FALSE)

    Patarimas. Kad išvengtumėte galimų pradinių tarpų problemų, rekomenduoju formulę, kurioje šalinami skaičiai, visada apvynioti TRIM funkcija:

    =TRIM(SplitTextNumbers(A2, FALSE))

    Specialus įrankis skaičiams arba tekstui pašalinti

    Tiems, kurie nemėgsta be reikalo komplikuoti dalykų, parodysiu savo būdą, kaip pašalinti tekstą ar skaičius "Excel" programoje.

    Darant prielaidą, kad mūsų "Ultimate Suite" pridėta prie "Excel" juostos, atlikite šiuos veiksmus:

    1. Dėl Ablebitų duomenys skirtuke Tekstas grupę, spustelėkite Pašalinti > Pašalinti simbolius .

  • Papildinio lange pasirinkite šaltinio diapazoną, pasirinkite Pašalinti simbolių rinkinius parinktį ir pasirinkite Tekstas ženklai arba Skaitmeninis ženklai išskleidžiamajame sąraše.
  • Paspauskite Pašalinti ir mėgaukitės rezultatu :)
  • Patarimas. Jei rezultatuose yra tarpų, įrankis "Trim Spaces" akimirksniu juos pašalins.

    Štai kaip "Excel" programoje iš eilutės pašalinti teksto arba skaitinius simbolius. Dėkoju, kad perskaitėte, ir laukiu jūsų mūsų tinklaraštyje kitą savaitę!

    Galimi atsisiuntimai

    Teksto arba skaičių pašalinimas "Excel" programoje - pavyzdžiai (.xlsm failas)

    "Ultimate Suite" - bandomoji versija (.exe failas)

    Michaelas Brownas yra atsidavęs technologijų entuziastas, mėgstantis supaprastinti sudėtingus procesus naudojant programinės įrangos įrankius. Turėdamas daugiau nei dešimtmetį patirtį technologijų pramonėje, jis patobulino savo įgūdžius „Microsoft Excel“ ir „Outlook“, taip pat „Google“ skaičiuoklėse ir dokumentuose. Michaelio tinklaraštis skirtas dalytis savo žiniomis ir patirtimi su kitais, jame pateikiami lengvai įgyvendinami patarimai ir vadovėliai, kaip pagerinti produktyvumą ir efektyvumą. Nesvarbu, ar esate patyręs profesionalas, ar pradedantysis, Michaelo tinklaraštyje rasite vertingų įžvalgų ir praktinių patarimų, kaip išnaudoti visas šių pagrindinių programinės įrangos įrankių galimybes.