Paano mag-alis ng teksto o mga numero mula sa Excel cell

  • Ibahagi Ito
Michael Brown

Tuturuan ka ng tutorial na ito kung paano paghiwalayin ang text mula sa mga numero sa Excel sa pamamagitan ng paggamit ng mga native na formula at custom na function. Matututuhan mo rin kung paano hatiin ang text at mga numero sa dalawang magkahiwalay na column.

Isipin mo ito: nakatanggap ka ng raw data para sa pagsusuri at malalaman na ang mga numero ay pinaghalo sa text sa isang column. Sa karamihan ng mga sitwasyon, tiyak na magiging mas maginhawang ilagay ang mga ito sa magkahiwalay na column para sa mas malapit na pagsusuri.

Kung sakaling nagtatrabaho ka sa homogenous na data, malamang na maaari mong gamitin ang LEFT, RIGHT, at MID function upang kunin ang parehong bilang ng mga character mula sa parehong posisyon. Ngunit iyon ay isang perpektong senaryo para sa mga pagsubok sa laboratoryo. Sa totoong buhay, malamang na haharapin mo ang magkaibang data kung saan nauuna ang mga numero bago ang text, pagkatapos ng text o sa pagitan ng text. Ang mga halimbawa sa ibaba ay nagbibigay ng mga solusyon nang eksakto para sa kasong ito.

    Paano mag-alis ng text at panatilihin ang mga numero sa mga Excel cell

    Gumagana ang solusyon sa Excel 365, Excel 2021 , at Excel 2019

    Nagpakilala ang Microsoft Excel 2019 ng ilang bagong function na hindi available sa mga naunang bersyon, at gagamitin namin ang isa sa mga naturang function, ang TEXTJOIN, upang alisin ang mga text character mula sa isang cell naglalaman ng mga numero.

    Ang generic na formula ay:

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

    Sa Excel 365 at 2021, gagana rin ang isang ito:

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

    Sa unang tingin, ang mga formula ay maaaring magmukhang medyo nakakatakot, ngunit gumagana ang mga ito :)

    Halimbawa, para mag-alis ng text mula sa mga numero sa A2, ilagay ang isa sa mga formula sa ibaba sa B2, at pagkatapos ay kopyahin ito sa pinakamaraming cell kung kinakailangan.

    Sa Excel 365 - 2019:

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

    Sa Excel 2019, dapat itong ilagay bilang array formula na may Ctrl + Shift + Enter . Sa dynamic array Excel, ito ay gumagana bilang isang normal na formula na kinumpleto gamit ang Enter key.

    Sa Excel 365 at 2021:

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

    Bilang resulta, lahat ng text character ay inalis mula sa isang cell at pinapanatili ang mga numero:

    Paano gumagana ang formula na ito:

    Upang mas maunawaan ang lohika, magsimula tayong magsiyasat ang formula mula sa loob:

    Gumagamit ka ng alinman sa ROW(INDIRECT("1:"&LEN(string))) o SEQUENCE(LEN(string)) para gumawa ng sequence ng mga numero na tumutugma sa kabuuang bilang ng mga character sa source string, at pagkatapos ay i-feed ang mga sequential number na iyon sa MID function bilang mga panimulang numero. Sa B2, ang bahaging ito ng formula ay ganito ang hitsura:

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

    Kinukuha ng MID function ang bawat character mula sa A2 simula sa pinakauna at ibinabalik ang mga ito bilang array:

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

    Ang array na ito ay pinarami ng 1. Ang mga numerong halaga ay nananatili nang walang pagbabago, habang ang pag-multiply ng isang hindi numeric na character ay nagreresulta sa isang #VALUE! error:

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

    Ang IFERROR function ang humahawakang mga error na ito at pinapalitan ang mga ito ng mga walang laman na string:

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

    Ang panghuling array na ito ay inihahatid sa TEXTJOIN function, na pinagsasama-sama ang mga hindi walang laman na value sa array ( ignore_empty argument na nakatakda sa TRUE) gamit ang isang walang laman na string ("") para sa delimiter:

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

    Tip. Para sa Excel 2016 - 2007, mayroon ding solusyon, ngunit ang formula ay mas kumplikado. Mahahanap mo ito sa tutorial na ito: Paano mag-extract ng mga numero sa Excel.

    Custom na function para mag-alis ng text mula sa mga numero

    Gumagana ang solusyon para sa lahat ng bersyon ng Excel

    Kung gumagamit ka ng mas lumang bersyon ng Excel o hanapin din ang mga formula sa itaas mahirap tandaan, walang pumipigil sa iyo na gumawa ng sarili mong function na may mas simpleng syntax at user-friendly na pangalan gaya ng RemoveText . Ang user-defined function (UDF) ay maaaring isulat sa dalawang paraan:

    VBA code 1:

    Dito, tinitingnan namin ang bawat character sa source string nang paisa-isa isa at tingnan kung ito ay numero o hindi. Kung numero, idaragdag ang character sa resultang string.

    Function RemoveText(str As String ) Dim sRes Bilang String sRes = "" Para sa i = 1 Sa Len(str) If True = IsNumeric(Mid(str, i , 1)) Pagkatapos sRes = sRes & Mid(str, i, 1) End If Next i RemoveText = sRes End Function

    VBA code 2:

    Gumagawa ang code ng object para magproseso ng regular na expression. Gamit ang RegExp, inaalis namin ang lahat ng character maliban sa mga digit 0-9 mula sa source string.

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

    Sa maliliit na worksheet, parehong mahusay na gaganap ang parehong mga code. Sa malalaking worksheet kung saan ang function ay tinatawag na daan-daan o libu-libong beses, ang code 2 na gumagamit ng VBScript.RegExp ay gagana nang mas mabilis.

    Ang mga detalyadong hakbang sa pagpasok ng code sa iyong workbook ay matatagpuan dito: Paano magpasok ng VBA code sa Excel.

    Alinmang diskarte ang pipiliin mo, mula sa pananaw ng end-user, ang function na magtanggal ng text at mag-iwan ng mga numero ay kasing simple nito:

    RemoveText(string)

    Halimbawa, upang alisin ang mga non-numeric na character mula sa cell A2, ang formula sa B2 ay:

    =RemoveText(A2)

    Kopyahin lang ito sa column, at makukuha mo ang resultang ito:

    Tandaan. Parehong ang mga native na formula at custom na function ay naglalabas ng numeric string . Upang gawing numero, i-multiply ang resulta sa 1, o magdagdag ng zero, o ibalot ang formula sa VALUE function. Halimbawa:

    =RemoveText(A2) + 0

    =VALUE(RemoveText(A2))

    Paano mag-alis ng mga numero mula sa text string sa Excel

    Gumagana ang solusyon sa Excel 365, Excel 2021, at Excel 2019

    Ang mga formula para mag-alis ng mga numero mula sa isang alphanumeric string ay halos kapareho sa mga tinalakay sa nakaraang halimbawa.

    Para sa Excel 365 - 2019:

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

    Sa Excel 2019, tandaan na gawin itong array formula sa pamamagitan ng pagpindot sa Ctrl + Shift + Enter key nang magkasama.

    Para sa Excel 365 at 2021:

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

    Halimbawa, upang alisin ang mga numero mula sa isang string sa A2, ang formula ay:

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

    O

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

    Bilang resulta, ang lahat ng numero ay tinanggal mula sa isang cell at ang mga text na character ay pinananatili:

    Tulad ng ipinapakita sa screenshot sa itaas, tinatanggal ng formula ang mga numerong character mula sa anumang posisyon sa isang string: sa simula, sa dulo, at sa gitna. Gayunpaman, mayroong isang caveat: kung ang isang string nagsisimula sa isang numero na sinusundan ng isang puwang , pinapanatili ang puwang na iyon, na nagdudulot ng problema sa mga nangungunang espasyo (tulad ng sa B2).

    Upang maalis ang mga dagdag na mga puwang bago ang teksto , balutin ang formula sa TRIM function na tulad nito:

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

    Ngayon, ang iyong mga resulta ay ganap na perpekto!

    Paano gumagana ang formula na ito:

    Sa esensya, gumagana ang formula tulad ng ipinaliwanag sa nakaraang halimbawa. Ang pagkakaiba ay, mula sa huling array na inihatid hanggang sa TEXTJOIN function, kailangan mong alisin ang mga numero, hindi text. Para magawa ito, ginagamit namin ang kumbinasyon ng mga function ng IF at ISERROR.

    Sa naaalala mo,MID(…)+0 ay bumubuo ng hanay ng mga numero at #VALUE! mga error na kumakatawan sa mga text character sa parehong mga posisyon:

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

    Hinahanap ng ISERROR function ang mga error at ipinapasa ang resultang array ng mga Boolean value sa IF:

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

    Kapag nakita ng IF function ang TRUE (isang error), ipinapasok nito ang kaukulang text character sa naprosesong array sa tulong ng isa pang MID function. Kapag nakita ng IF function na FALSE (isang numero), papalitan ito ng isang walang laman na string:

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

    Ang panghuling array na ito ay ipinapasa sa TEXTJOIN, kaya pinagsasama-sama nito ang mga text character at naglalabas ng resulta.

    Custom na function para mag-alis ng mga numero mula sa text

    Gumagana ang solusyon para sa lahat ng bersyon ng Excel

    Isinasaalang-alang na ang isang matatag na formula ay dapat panatilihin simple, ibabahagi ko ang code ng user-defined function (UDF) para tanggalin ang anumang numeric na character.

    VBA code 1:

    Function RemoveNumbers(str As String ) Dim sRes Bilang String sRes = "" Para sa i = 1 Sa Len(str) Kung Mali = IsNumeric(Mid(str, i, 1)) Pagkatapos sRes = sRes & Mid(str, i, 1) End If Next i RemoveNumbers = sRes End Function

    VBA code 2:

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

    Tulad ng kaso sa RemoveText function, ang pangalawang code ay mas mahusay na gamitin sa malakiworksheet upang i-optimize ang pagganap.

    Kapag naidagdag na ang code sa iyong workbook, maaari mong alisin ang lahat ng mga numerong character mula sa isang cell gamit ang custom na function na ito:

    RemoveNumbers(string)

    Sa aming kaso, ang Ang formula sa B2 ay:

    =RemoveNumbers(A2)

    Upang i-trim ang mga nangungunang puwang kung mayroon man, ilagay ang custom na function sa loob ng TRIM tulad ng gagawin mo sa isang native na formula:

    =TRIM(RemoveNumbers(A2))

    Hatiin ang mga numero at text sa magkahiwalay na column

    Sa sitwasyong gusto mong paghiwalayin ang text at mga numero sa dalawang column, mainam na gawin ang trabaho gamit ang isang formula , pumayag? Para dito, pinagsama-sama lang namin ang code ng RemoveText at RemoveNumbers function sa isang function, pinangalanang SplitTextNumbers , o simpleng Split , o kahit anong gusto mo :)

    VBA code 1:

    Function SplitTextNumbers(str As String , is_remove_text As Boolean ) As String Dim sNum, sText, sChar As String sCurChar = sNum = sText = "" Para sa 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 Function

    VBA code 2:

    Function SplitTextNumbers(str As String , is_remove ) Astext As_remove Gamit ang CreateObject ( "VBScript.RegExp") .Global = True If True = is_remove_text Then .Pattern = "[^0-9]" Iba pa.Pattern = "[0-9]" End If SplitTextNumbers = .Replace(str, "") End With End Function

    Ang aming bagong custom na function ay nangangailangan ng dalawang argumento:

    SplitTextNumbers(string, is_remove_text)

    Saan Ang is_remove_text ay isang Boolean value na nagsasaad kung aling mga character ang aalisin:

    • TRUE o 1 - alisin ang text at panatilihin ang mga numero
    • FALSE o 0 - alisin ang mga numero at panatilihin ang text

    Para sa aming sample na dataset, ginagawa ng mga formula ang form na ito:

    Upang alisin ang mga hindi numeric na character:

    =SplitTextNumbers(A2, TRUE)

    Upang tanggalin ang mga numeric na character :

    =SplitTextNumbers(A2, FALSE)

    Tip. Upang maiwasan ang isang potensyal na problema sa mga nangungunang espasyo, inirerekumenda kong palaging i-wrap ang formula na nag-aalis ng mga numero sa TRIM function:

    =TRIM(SplitTextNumbers(A2, FALSE))

    Espesyal na tool para mag-alis ng mga numero o text

    Para sa mga gumagawa hindi tulad ng pagpapalubha ng mga bagay nang hindi kinakailangan, ipapakita ko ang sarili naming paraan ng pag-alis ng text o mga numero sa Excel.

    Ipagpalagay na ang aming Ultimate Suite ay idinagdag sa iyong Excel ribbon, ito ang gagawin mo:

    1. Sa tab na Ablebits Data , sa grupong Text , i-click ang Alisin > Alisin ang Mga Character .

  • Sa pane ng add-in, piliin ang hanay ng pinagmulan, piliin ang opsyon na Alisin ang mga set ng character , at piliin ang alinman sa Text character o Numeric character sa drop-down list.
  • Pindutin ang Alisin at tamasahin ang resulta :)
  • Tip. Kung ang mga resulta ay naglalaman ng ilang nangungunang puwang, ang Trim Spacesaalisin ng tool ang mga ito sa anumang oras.

    Ganyan mag-alis ng mga text o numeric na character mula sa isang string sa Excel. Salamat sa pagbabasa at umaasa akong makita ka sa aming blog sa susunod na linggo!

    Mga available na download

    Alisin ang text o mga numero sa Excel - mga halimbawa (.xlsm file)

    Ultimate Suite - trial na bersyon (.exe file)

    Si Michael Brown ay isang dedikadong mahilig sa teknolohiya na may hilig sa pagpapasimple ng mga kumplikadong proseso gamit ang mga tool sa software. Sa higit sa isang dekada ng karanasan sa industriya ng tech, hinasa niya ang kanyang mga kasanayan sa Microsoft Excel at Outlook, pati na rin ang Google Sheets at Docs. Ang blog ni Michael ay nakatuon sa pagbabahagi ng kanyang kaalaman at kadalubhasaan sa iba, na nagbibigay ng madaling sundan na mga tip at mga tutorial para sa pagpapabuti ng pagiging produktibo at kahusayan. Isa ka mang batikang propesyonal o baguhan, nag-aalok ang blog ni Michael ng mahahalagang insight at praktikal na payo para masulit ang mahahalagang software tool na ito.