Tabela e përmbajtjes
Ky tutorial do t'ju mësojë se si të ndani tekstin nga numrat në Excel duke përdorur formulat vendase dhe funksionet e personalizuara. Do të mësoni gjithashtu se si të ndani tekstin dhe numrat në dy kolona të veçanta.
Imagjinoni këtë: merrni të dhëna të papërpunuara për analizë dhe zbuloni se numrat janë të përzier me tekstin në një kolonë. Në shumicën e situatave, sigurisht që do të jetë më e përshtatshme t'i keni ato në kolona të veçanta për ekzaminim më të afërt.
Në rast se jeni duke punuar me të dhëna homogjene, ndoshta mund të përdorni funksionet LEFT, RIGHT dhe MID për të nxjerrë numër i njëjtë i karaktereve nga i njëjti pozicion. Por ky është një skenar ideal për teste laboratorike. Në jetën reale, ka shumë të ngjarë të merreni me të dhëna të ndryshme ku numrat vijnë para tekstit, pas tekstit ose midis tekstit. Shembujt e mëposhtëm ofrojnë zgjidhje pikërisht për këtë rast.
Si të hiqni tekstin dhe të mbani numrat në qelizat e Excel
Zgjidhja funksionon në Excel 365, Excel 2021 , dhe Excel 2019
Microsoft Excel 2019 prezantoi disa funksione të reja që nuk janë të disponueshme në versionet e mëparshme dhe ne do të përdorim një nga funksionet e tilla, domethënë TEXTJOIN, për të hequr karakteret e tekstit nga një qelizë që përmban numra.
Formula e përgjithshme është:
TEXTJOIN("", TRUE, IFERROR(MID( qeliza, ROW(INDIRECT( "1:"&LEN( qeliza))), 1) *1, ""))Në Excel 365 dhe 2021, kjo do të funksionojë gjithashtu:
TEXTJOIN("", TRUE,IFERROR(MID( qeliza, SEQUENCA(LEN( qeliza)), 1) *1, ""))Në pamje të parë, formulat mund të duken pak frikësuese, por ato funksionojnë :)
Për shembull, për të hequr tekstin nga numrat në A2, futni një nga formulat e mëposhtme në B2 dhe më pas kopjojeni atë në aq qeliza sa të nevojitet.
Në Excel 365 - 2019:
=TEXTJOIN("", TRUE, IFERROR(MID(A2, ROW(INDIRECT( "1:"&LEN(A2))), 1) *1, ""))
Në Excel 2019, duhet të futet si formulë grupi me Ctrl + Shift + Enter . Në grupin dinamik Excel, ai funksionon si një formulë normale e plotësuar me tastin Enter.
Në Excel 365 dhe 2021:
=TEXTJOIN("", TRUE, IFERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1, ""))
Si rezultat, të gjitha karakteret e tekstit janë hiqet nga një qelizë dhe numrat mbahen:
Si funksionon kjo formulë:
Për të kuptuar më mirë logjikën, le të fillojmë të hetojmë formula nga brenda:
Ju përdorni ose ROW(INDIRECT("1:"&LEN(string))) ose SEQUENCE(LEN(string)) për të krijuar një sekuencë një numra që korrespondon me numrin total të karaktereve në vargun e burimit, dhe më pas futni këta numra vijues në funksionin MID si numra fillestarë. Në B2, kjo pjesë e formulës duket si më poshtë:
MID(A2, {1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}, 1)
Funksioni MID nxjerr çdo karakter nga A2 duke filluar nga i pari dhe i kthen ato si një grup:
{"2";"1";"0";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}
Ky grup shumëzohet me 1. Vlerat numerike mbijetojnë pa ndryshim, ndërsa shumëzimi i një karakteri jonumerik rezulton në një #VALUE! gabim:
{2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}
Funksioni IFERROR trajtonkëto gabime dhe i zëvendëson ato me vargje boshe:
{2;1;0;"";"";"";"";"";"";"";"";"";"";"";""}
Ky grup përfundimtar i shërbehet funksionit TEXTJOIN, i cili bashkon vlerat jo bosh në grup ( ignore_empty argumenti u vendos në TRUE) duke përdorur një varg bosh ("") për ndarësin:
TEXTJOIN("", TRUE, {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""})
Këshillë. Për Excel 2016 - 2007, ekziston gjithashtu një zgjidhje, por formula është shumë më komplekse. Mund ta gjeni në këtë tutorial: Si të nxjerrim numrat në Excel.
Funksioni i personalizuar për të hequr tekstin nga numrat
Zgjidhja funksionon për të gjitha versionet e Excel
Nëse jeni duke përdorur një version më të vjetër të Excel ose gjeni edhe formulat e mësipërme vështirë për t'u mbajtur mend, asgjë nuk ju pengon të krijoni funksionin tuaj me një sintaksë më të thjeshtë dhe një emër të përshtatshëm për përdoruesit si RemoveText . Funksioni i përcaktuar nga përdoruesi (UDF) mund të shkruhet në dy mënyra:
Kodi VBA 1:
Këtu, ne shikojmë çdo karakter në vargun burimor një nga një dhe kontrolloni nëse është numerike apo jo. Nëse është një numër, karakteri i shtohet vargut që rezulton.
Funksioni RemoveText(str As String ) Dim sRes As String sRes = "" Për i = 1 Te Len(str) If True = IsNumeric(Mid(str, i , 1)) Pastaj sRes = sRes & Mid(str, i, 1) End If Next i RemoveText = Funksioni sRes FundKodi VBA 2:
Kodi krijon një objekt për të përpunuar një shprehje të rregullt. Duke përdorur RegExp, ne heqim të gjitha karakteret përveç shifrave 0-9 nga vargu burimor.
Funksioni RemoveText(str As String ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[^0-9]" RemoveText = .Replace(str, "" ) Fund Me End FunctionNë fletë të vogla pune, të dy kodet do të funksionojnë njësoj mirë. Në fletë pune të mëdha ku funksioni thirret qindra ose mijëra herë, kodi 2 që përdor VBScript.RegExp do të funksionojë më shpejt.
Hapat e detajuar për të futur kodin në librin tuaj të punës mund të gjenden këtu: Si të futni VBA kodi në Excel.
Cido qasje që zgjidhni, nga këndvështrimi i përdoruesit fundor, funksioni për të fshirë tekstin dhe për të lënë numrat është po aq i thjeshtë sa ky:
RemoveText(string)Për shembull, në hiqni karakteret jo numerike nga qeliza A2, formula në B2 është:
=RemoveText(A2)
Vetëm kopjojeni atë në kolonë dhe do të merrni këtë rezultat:
Shënim. Si formulat vendase ashtu edhe funksioni i personalizuar nxjerrin një varg numerik . Për ta kthyer atë në një numër, shumëzojeni rezultatin me 1, ose shtoni zero, ose mbështillni formulën në funksionin VALUE. Për shembull:
=RemoveText(A2) + 0
=VALUE(RemoveText(A2))
Si të hiqni numrat nga vargu i tekstit në Excel
Zgjidhja funksionon në Excel 365, Excel 2021 dhe Excel 2019
Formulat për të hequr numrat nga një varg alfanumerik janë shumë të ngjashme me ato të diskutuara në shembullin e mëparshëm.
Për Excel 365 - 2019:
TEXTJOIN(" ", TRUE, IF(ISERR(MID( qeliza , RRESHT(INDIRECT("1:"&LEN( qeliza ) )), 1) *1), MID( qeliza , RRESHT(INDIRECT("1:"&LEN( qeliza ))), 1), ""))Në Excel 2019, mos harroni ta bëni atë një formulë grupi duke shtypur së bashku tastet Ctrl + Shift + Enter.
Për Excel 365 dhe 2021:
TEXTJOIN("", TRUE, IF(ISERROR(MID( qeliza , SEQUENCE(LEN( qeliza 1) *1), MID ( qeliza , SEQUENCA(LEN( qeliza )), 1), ""))Për shembull, për të hequr numrat nga një varg në A2, formula është:
=TEXTJOIN("", TRUE, IF(ISERR(MID(A2, ROW(INDIRECT( "1:"&LEN(A2) )), 1) *1), MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1), ""))
Ose
=TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), ""))
Si rezultat, të gjithë numrat hiqen nga një qelizë dhe karakteret e tekstit mbahen:
Siç tregohet në pamjen e mësipërme, formula heq karakteret numerike nga çdo pozicion në një varg: në fillim, në fund dhe në mes. Megjithatë, ka një paralajmërim: nëse një varg fillon me një numër të ndjekur nga një hapësirë , ajo hapësirë ruhet, gjë që krijon një problem të hapësirave kryesore (si në B2).
Për të hequr qafe hapësirat shtesë përpara tekstit , mbështillni formulën në funksionin TRIM si kjo:
=TRIM(TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), "")))
Tani, rezultatet tuaja janë absolutisht perfekte!
Si funksionon kjo formulë:
Në thelb, formula funksionon njësoj siç u shpjegua në shembullin e mëparshëm. Dallimi është se, nga grupi përfundimtar i shërbyer deri te funksioni TEXTJOIN, duhet të hiqni numrat, jo tekstin. Për ta bërë këtë, ne përdorim kombinimin e funksioneve IF dhe ISERROR.
Siç e mbani mend,MID(…)+0 gjeneron një grup numrash dhe #VALUE! gabime që përfaqësojnë karakteret e tekstit në të njëjtat pozicione:
{2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}
Funksioni ISERROR kap gabimet dhe ia kalon grupin rezultues të vlerave Boolean në IF:
{FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE}
Kur funksioni IF sheh TRUE (një gabim), ai fut karakterin përkatës të tekstit në grupin e përpunuar me ndihmën e një funksioni tjetër MID. Kur funksioni IF sheh FALSE (një numër), ai e zëvendëson atë me një varg bosh:
{"";"";"";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}
Ky grup përfundimtar i kalohet TEXTJOIN, kështu që bashkon karakteret e tekstit dhe nxjerr rezultat.
Funksioni i personalizuar për të hequr numrat nga teksti
Zgjidhja funksionon për të gjitha versionet e Excel
Duke pasur parasysh se duhet mbajtur një formulë e fortë thjeshtë, do të ndaj kodin e funksionit të përcaktuar nga përdoruesi (UDF) për të hequr çdo karakter numerik.
Kodi VBA 1:
Funksioni RemoveNumbers(str As String ) Dim sRes As String sRes = "" Për i = 1 Për Len(str) Nëse False = IsNumerike(Mid(str, i, 1)) Pastaj sRes = sRes & Mid(str, i, 1) Fund If Next i RemoveNumbers = sRes Fund FunksioniKodi VBA 2:
Funksioni RemoveNumbers(str As String ) As String With CreateObject ( "VBScript.RegExp" ). i madhfletët e punës për të optimizuar performancën.Pasi të shtohet kodi në librin tuaj të punës, mund të hiqni të gjitha karakteret numerike nga një qelizë duke përdorur këtë funksion të personalizuar:
Në rastin tonë, formula në B2 është:
=RemoveNumbers(A2)
Për të shkurtuar hapësirat kryesore nëse ka, futni funksionin e personalizuar brenda TRIM si një formulë origjinale:
=TRIM(RemoveNumbers(A2))
Ndani numrat dhe tekstin në kolona të veçanta
Në situatën kur dëshironi të ndani tekstin dhe numrat në dy kolona, do të ishte mirë që puna të kryhej me një formulë të vetme , dakord? Për këtë, ne thjesht bashkojmë kodin e funksioneve RemoveText dhe RemoveNumbers në një funksion, të quajtur SplitTextNumbers , ose thjesht Split , ose çfarëdo që ju pëlqen :)
Kodi VBA 1:
Funksioni SplitTextNumbers(str As String , is_remove_text Si Boolean ) Si varg Dim sNum, sText, sChar Si varg sCurChar = sNum = sText = "" Për i = 1 Për Len(str) sCurChar = Mid(str, i, 1) Nëse e Vërtetë = IsNumerike(sCurChar) Atëherë sNum = sNum & sCurChar Tjetër sText = sText & sCurChar End If Next i If True = is_remove_text Pastaj SplitTextNumbers = sNum Tjetër SplitTextNumbers = sText Fund If End FunksioniKodi VBA 2:
Funksioni SplitTextNumbers(str As String Asremole_) Me CreateObject ( "VBScript.RegExp" ) .Global = E vërtetë nëse e vërtetë = is_remove_text Pastaj . Modeli = "[^0-9]" Tjetër.Pattern = "[0-9]" Fund If SplitTextNumbers = .Replace(str, "" ) Fund With End FunctionFunksioni ynë i ri personal kërkon dy argumente:
SplitTextNumbers(string, is_remove_text)Ku is_remove_text është një vlerë Boolean që tregon se cilat karaktere duhet të hiqen:
- TRUE ose 1 - hiqni tekstin dhe mbani numrat
- FALSE ose 0 - hiqni numrat dhe mbani tekstin
Për grupin tonë të të dhënave të mostrës, formulat marrin këtë formë:
Për të hequr karakteret jonumerike:
=SplitTextNumbers(A2, TRUE)
Për të fshirë karakteret numerike :
=SplitTextNumbers(A2, FALSE)
Këshillë. Për të shmangur një problem të mundshëm të hapësirave kryesore, rekomandoj që gjithmonë të mbështillni formulën që heq numrat në funksionin TRIM:
=TRIM(SplitTextNumbers(A2, FALSE))
Mjet special për të hequr numrat ose tekstin
Për ata që e bëjnë këtë jo si t'i ndërlikojmë gjërat në mënyrë të panevojshme, unë do të tregoj mënyrën tonë për të hequr tekstin ose numrat në Excel.
Duke supozuar se Suite jonë Ultimate është shtuar në shiritin tuaj të Excel, kjo është ajo që bëni:
- Në skedën Ablebits Data , në grupin Tekst , kliko Hiq > Hiq karakteret .
Këshillë. Nëse rezultatet përmbajnë disa hapësira kryesore, hapësirat e shkurtimitmjeti do t'i eliminojë ato në asnjë kohë.
Kjo është se si të hiqni tekstin ose karakteret numerike nga një varg në Excel. Ju falënderoj që lexoni dhe mezi pres t'ju shohim në blogun tonë javën tjetër!
Shkarkimet e disponueshme
Hiqni tekstin ose numrat në Excel - shembuj (skedari .xlsm)
Ultimate Suite - versioni i provës (skedari .exe)