Hogyan lehet eltávolítani a szöveget vagy a számokat az Excel-cellából

  • Ossza Meg Ezt
Michael Brown

Ez a bemutató megtanítja, hogyan lehet a szöveget és a számokat az Excelben a natív képletek és egyéni függvények segítségével elválasztani egymástól. Azt is megtanulja, hogyan lehet a szöveget és a számokat két külön oszlopba osztani.

Képzelje el a következőt: megkapja a nyers adatokat elemzésre, és kiderül, hogy a számok keverednek a szöveggel egy oszlopban. A legtöbb helyzetben bizonyára kényelmesebb lenne, ha a közelebbi vizsgálathoz külön oszlopokban lennének.

Abban az esetben, ha homogén adatokkal dolgozol, valószínűleg a LEFT, RIGHT és MID függvényeket használhatod, hogy ugyanabból a pozícióból azonos számú karaktert nyerj ki. De ez egy ideális forgatókönyv laboratóriumi vizsgálatokhoz. A való életben valószínűleg olyan eltérő adatokkal kell foglalkoznod, ahol a számok a szöveg előtt, után vagy a szöveg között vannak. Az alábbi példák pontosan erre adnak megoldást. Az alábbi példák pontosan erre adnak megoldásteset.

    Hogyan lehet eltávolítani a szöveget és megtartani a számokat az Excel-cellákban?

    A megoldás az Excel 365, az Excel 2021 és az Excel 2019 programokban működik.

    A Microsoft Excel 2019 bevezetett néhány olyan új funkciót, amely a korábbi verziókban nem állt rendelkezésre, és az egyik ilyen funkciót, nevezetesen a TEXTJOIN-t fogjuk használni a szöveges karakterek eltávolítására egy számokat tartalmazó cellából.

    Az általános képlet a következő:

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

    Az Excel 365-ben és 2021-ben ez is működik:

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

    Első ránézésre a képletek kissé ijesztőnek tűnhetnek, de tényleg működnek :)

    Ha például el szeretné távolítani a szöveget az A2 cellában lévő számokból, írja be az alábbi képletek egyikét a B2 cellába, majd másolja le annyi cellába, ahányszor csak szükséges.

    Az Excel 365 - 2019:

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

    Az Excel 2019-ben tömbképletként kell beírni a Ctrl + Shift + Enter billentyűkombinációval . A dinamikus tömb Excelben az Enter billentyűvel befejezett normál képletként működik.

    Az Excel 365 és 2021:

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

    Ennek eredményeképpen a cellából minden szöveges karaktert eltávolít, a számokat pedig megtartja:

    Hogyan működik ez a képlet:

    A logika jobb megértéséhez kezdjük el a képletet belülről vizsgálni:

    A ROW(INDIRECT("1:"&LEN(string))) vagy a SEQUENCE(LEN(string)) segítségével létrehozhat egy számsorozatot, amely megfelel a forrás stringben lévő karakterek teljes számának, majd ezeket a sorszámokat kezdő számokként a MID függvénybe táplálja. B2-ben a képlet ezen része a következőképpen néz ki:

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

    A MID függvény minden egyes karaktert kivesz az A2-ből, kezdve a legelsővel, és egy tömbként adja vissza őket:

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

    Ezt a tömböt megszorozzuk 1-gyel. A numerikus értékek változatlanul megmaradnak, míg egy nem numerikus karakter megszorozása #VALUE! hibát eredményez:

    {2;1;0;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!}

    Az IFERROR függvény kezeli ezeket a hibákat, és üres karakterláncokkal helyettesíti őket:

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

    Ezt a végleges tömböt a TEXTJOIN függvény kapja meg, amely a tömb nem üres értékeit ( ignore_empty argumentum TRUE-ra állítva) üres karakterláncot ("") használva elválasztójelként:

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

    Tipp. Az Excel 2016 - 2007 számára is létezik megoldás, de a képlet sokkal összetettebb. Ebben a bemutatóban találja: Hogyan vonjunk ki számokat az Excelben.

    Egyéni funkció a szöveg eltávolítására a számokból

    A megoldás minden Excel-verzióban működik

    Ha az Excel egy régebbi verzióját használja, vagy a fenti képleteket túl nehéz megjegyezni, semmi sem akadályozza meg abban, hogy létrehozzon egy saját függvényt egyszerűbb szintaxissal és felhasználóbarát névvel, mint például RemoveText A felhasználó által definiált függvény (UDF) kétféleképpen írható:

    VBA kód 1:

    Itt a forrás karakterlánc minden egyes karakterét egyenként megnézzük, és ellenőrizzük, hogy numerikus-e. Ha szám, akkor a karaktert hozzáadjuk a kapott karakterlánchoz.

    Function 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 kód 2:

    A kód létrehoz egy objektumot egy reguláris kifejezés feldolgozásához. A RegExp használatával a 0-9-es számjegyeken kívül minden karaktert eltávolítunk a forrássztringből.

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

    Kis munkalapokon mindkét kód egyformán jól fog működni, de nagy munkalapokon, ahol a függvényt több száz vagy ezer alkalommal hívják meg, a VBScript.RegExp-t használó 2. kód gyorsabban fog működni.

    A kódnak a munkafüzetbe való beillesztésének részletes lépései itt találhatók: Hogyan illesszünk be VBA-kódot az Excelbe.

    Bármelyik megközelítést is választja, a végfelhasználó szempontjából a szöveg törlése és a számok meghagyása ilyen egyszerű:

    RemoveText(string)

    Például, a nem számjegyek eltávolításához az A2 cellából, a B2 cellában lévő képlet a következő:

    =RemoveText(A2)

    Csak másolja le az oszlopba, és ezt az eredményt kapja:

    Megjegyzés: Mind a natív képletek, mind az egyéni függvények kimeneti értéke egy numerikus karakterlánc Ha számmá szeretné alakítani, szorozza meg az eredményt 1-gyel, vagy adjon hozzá nullát, vagy tekerje a képletet a VALUE függvénybe. Például:

    =RemoveText(A2) + 0

    =VALUE(RemoveText(A2))

    Hogyan lehet eltávolítani a számokat a szöveges karakterláncból az Excelben

    A megoldás az Excel 365, az Excel 2021 és az Excel 2019 programokban működik.

    A számok alfanumerikus karakterláncból való eltávolítására szolgáló képletek nagyjából hasonlóak az előző példában tárgyaltakhoz.

    Az Excel 365 - 2019:

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

    Az Excel 2019-ben ne feledje, hogy a tömb képlet a Ctrl + Shift + Enter billentyűk együttes lenyomásával.

    Az Excel 365 és 2021 esetében:

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

    Például, ha az A2 karakterláncból számokat akarunk eltávolítani, a képlet a következő:

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

    Vagy

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

    Ennek eredményeképpen az összes számot eltávolítja a cellából, és megtartja a szöveges karaktereket:

    Amint a fenti képernyőképen látható, a képlet a karakterlánc bármelyik pozíciójából eltávolítja a numerikus karaktereket: az elején, a végén és a közepén. Van azonban egy kikötés: ha egy karakterlánc számmal kezdődik, amelyet szóköz követ , ez a szóköz megmarad, ami a vezető szóközök problémáját okozza (mint a B2-ben).

    Megszabadulni az extra szóközök a szöveg előtt , csomagolja a képletet a TRIM függvénybe a következőképpen:

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

    Nos, az eredményeid abszolút tökéletesek!

    Hogyan működik ez a képlet:

    A képlet lényegében ugyanúgy működik, mint az előző példában elmagyarázva. A különbség az, hogy a TEXTJOIN függvénynek szolgáltatott végső tömbből a számokat kell eltávolítani, nem pedig a szöveget. Ehhez az IF és az ISERROR függvények kombinációját használjuk.

    Mint emlékszik, a MID(...)+0 egy számokból és #VALUE! hibákból álló tömböt generál, amely szöveges karaktereket reprezentál az azonos pozíciókban:

    {2;1;0;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!;#ÉRTÉK!}

    Az ISERROR függvény elkapja a hibákat, és a kapott bóluszi értékek tömbjét átadja az IF-nek:

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

    Ha az IF függvény TRUE-t (hibát) lát, akkor a megfelelő szöveges karaktert egy másik MID függvény segítségével beilleszti a feldolgozott tömbbe. Ha az IF függvény FALSE-t (számot) lát, akkor egy üres karakterlánccal helyettesíti azt:

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

    Ezt a végső tömböt átadjuk a TEXTJOIN-nak, így az összefűzi a szöveges karaktereket, és kiadja az eredményt.

    Egyéni funkció a számok eltávolítására a szövegből

    A megoldás minden Excel-verzióban működik

    Szem előtt tartva, hogy egy robusztus képletet egyszerűnek kell tartani, megosztom a felhasználó által definiált függvény (UDF) kódját a numerikus karakterek eltávolítására.

    VBA kód 1:

    Function 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 kód 2:

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

    A RemoveText függvényhez hasonlóan a második kódot a teljesítmény optimalizálása érdekében nagyobb munkalapoknál célszerű használni.

    Miután a kódot hozzáadta a munkafüzethez, ezzel az egyéni funkcióval eltávolíthatja az összes numerikus karaktert egy cellából:

    RemoveNumbers(string)

    A mi esetünkben a B2-es képlet a következő:

    =RemoveNumbers(A2)

    A vezető szóközök levágásához, ha vannak, az egyéni függvényt a TRIM függvényen belülre kell fészkelni, mint egy natív képlet esetében:

    =TRIM(RemoveNumbers(A2))

    Számok és szöveg külön oszlopokba osztása

    Abban a helyzetben, amikor a szöveget és a számokat két oszlopba szeretnénk szétválasztani, jó lenne, ha ezt a feladatot egyetlen formulával végeznénk el, igaz? Ehhez csak egyesítjük a kódot a RemoveText és RemoveNumbers funkciókat egy függvénybe, melynek neve SplitTextNumbers , vagy egyszerűen Split , vagy amit csak akarsz :)

    VBA kód 1:

    Function 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 If If True = is_remove_text Then SplitTextNumbers = sNum Else SplitTextNumbers = sText End If End If End EndFunkció

    VBA kód 2:

    Function 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 With End Function

    Az új egyéni függvényünknek két argumentumra van szüksége:

    SplitTextNumbers(string, is_remove_text)

    Hol is_remove_text egy bóluszi érték, amely jelzi, hogy mely karaktereket kell eltávolítani:

    • TRUE vagy 1 - a szöveg eltávolítása és a számok megtartása
    • FALSE vagy 0 - számok eltávolítása és a szöveg megtartása

    A mintaadatkészletünk esetében a képletek a következő formát ölthetik:

    Nem numerikus karakterek eltávolítása:

    =SplitTextNumbers(A2, TRUE)

    Numerikus karakterek törlése:

    =SplitTextNumbers(A2, FALSE)

    Tipp: A vezető szóközökkel kapcsolatos potenciális probléma elkerülése érdekében javaslom, hogy a számokat eltávolító képletet mindig csomagolja be a TRIM függvénybe:

    =TRIM(SplitTextNumbers(A2, FALSE))

    Speciális eszköz számok vagy szöveg eltávolítására

    Azoknak, akik nem szeretik feleslegesen bonyolítani a dolgokat, megmutatom a saját módszerünket a szöveg vagy számok Excelben történő eltávolítására.

    Feltételezve, hogy az Ultimate Suite hozzá van adva az Excel szalaghoz, ezt kell tennie:

    1. A Ablebits adatok lapon, a Szöveg csoport, kattintson a Távolítsa el a > Karakterek eltávolítása .

  • A beépülő modul ablaktábláján jelölje ki a forrás tartományt, válassza a Karakterkészletek eltávolítása opciót, és válasszon Szöveg karakterek vagy Numerikus karakterek a legördülő listában.
  • Hit Távolítsa el a és élvezze az eredményt :)
  • Tipp: Ha az eredmények tartalmaznak néhány szóközt, a Trim Spaces eszköz pillanatok alatt eltünteti őket.

    Így távolíthat el szöveges vagy numerikus karaktereket egy karakterláncból az Excelben. Köszönöm, hogy elolvastad, és várom, hogy jövő héten találkozzunk a blogon!

    Elérhető letöltések

    Szöveg vagy számok eltávolítása Excelben - példák (.xlsm fájl)

    Ultimate Suite - próbaverzió (.exe fájl)

    Michael Brown elkötelezett technológiai rajongó, aki szenvedélyesen egyszerűsíti a bonyolult folyamatokat szoftvereszközök segítségével. A technológiai iparban szerzett több mint egy évtizedes tapasztalatával a Microsoft Excel és az Outlook, valamint a Google Táblázatok és a Dokumentumok területén fejlesztette tudását. Michael blogja célja, hogy megossza tudását és szakértelmét másokkal, könnyen követhető tippeket és oktatóanyagokat adva a termelékenység és a hatékonyság javításához. Akár tapasztalt szakember, akár kezdő, Michael blogja értékes betekintést és gyakorlati tanácsokat kínál, amelyek segítségével a legtöbbet hozhatja ki ezekből az alapvető szoftvereszközökből.