Talaan ng nilalaman
Sa kamakailang dalawang artikulo, tumingin kami sa iba't ibang paraan upang alisin ang mga character mula sa mga string sa Excel. Ngayon, mag-iimbestiga kami ng isa pang use case - kung paano tanggalin ang lahat bago o pagkatapos ng isang partikular na character.
Tanggalin ang text bago, pagkatapos o sa pagitan ng 2 character na may Find & Palitan
Para sa mga manipulasyon ng data sa maraming cell, ang Find and Replace ay ang tamang tool. Upang alisin ang bahagi ng string na nauuna o sumusunod sa isang partikular na character, ito ang mga hakbang na dapat gawin:
- Piliin ang lahat ng mga cell kung saan mo gustong tanggalin ang text.
- Pindutin ang Ctrl + H upang buksan ang dialog na Hanapin at Palitan .
- Sa kahon na Hanapin kung ano , ilagay ang isa sa mga sumusunod na kumbinasyon:
- Upang alisin ang teksto bago ang isang ibinigay na character , i-type ang character na sinusundan ng asterisk (*char).
- Upang alisin ang text pagkatapos ng isang partikular na character , i-type ang character na sinusundan ng asterisk (char *).
- Upang magtanggal ng substring sa pagitan ng dalawang character , mag-type ng asterisk na napapalibutan ng 2 character (char*char).
- Iwan ang Palitan ang ng na kahon na walang laman.
- I-click ang Palitan lahat .
Halimbawa, upang alisin ang lahat pagkatapos ng kuwit kasama ang kuwit mismo, maglagay ng kuwit at asterisk sign (,*) sa kahon na Hanapin kung ano , at makukuha mo ang sumusunod na resulta:
Upang magtanggal ng substring bago ang kuwit , mag-type ng asterisk, isang kuwit,lahat pagkatapos ng 1st comma sa A2, ang formula sa B2 ay:
=RemoveText(A3, ", ", 1, TRUE)
Upang tanggalin ang lahat bago ang 1st comma sa A2, ang formula sa C2 ay:
=RemoveText(A3, ", ", 1, FALSE)
Dahil ang aming custom na function ay tumatanggap ng isang string para sa delimiter , naglalagay kami ng kuwit at isang puwang (", ") sa ika-2 argumento upang maiwasan ang problema sa pag-trim ng mga nangungunang puwang pagkatapos.
Ang aming custom na function ay gumagana nang maganda, hindi ba? Ngunit kung sa tingin mo ito ang komprehensibong solusyon, hindi mo pa nakikita ang susunod na halimbawa :)
Tanggalin ang lahat bago, pagkatapos, o sa pagitan ng mga character
Upang makakuha ng higit pang mga opsyon para sa pag-alis ng mga indibidwal na character o text mula sa maramihang mga cell, ayon sa tugma o posisyon, idagdag ang aming Ultimate Suite sa iyong Excel toolbox.
Dito, titingnan namin ang tampok na Alisin ayon sa Posisyon na matatagpuan sa Ablebits Data tab > Text group > Alisin .
Sa ibaba, tatalakayin natin ang dalawa pinakakaraniwang mga sitwasyon.
Alisin ang lahat bago o pagkatapos ng ilang partikular na text
Ipagpalagay na ang lahat ng iyong source string ay naglalaman ng ilang karaniwang salita o text at gusto mong tanggalin ang lahat bago o pagkatapos ng text na iyon. Para magawa ito, piliin ang iyong source data, patakbuhin ang tool na Alisin ayon sa Posisyon , at i-configure ito tulad ng ipinapakita sa ibaba:
- Piliin ang Lahat ng character bago ang text o Lahat ng character pagkatapos ng text opsyon at i-type ang key text (o character) sa susunod na kahondito.
- Depende sa kung dapat ituring ang malaki at maliit na titik bilang magkaiba o magkaparehong mga character, lagyan ng check o alisan ng check ang kahon na Case-sensitive .
- Pindutin ang Alisin .
Sa halimbawang ito, inaalis namin ang lahat ng mga character bago ang salitang "error" sa mga cell A2:A8:
At makuha ang eksaktong resulta na hinahanap namin:
Alisin ang text sa pagitan ng dalawang character
Sa sitwasyon kung saan ang walang katuturang impormasyon ay nasa pagitan ng 2 partikular na character, narito kung paano mabilis mo itong matatanggal:
- Piliin ang Alisin ang lahat ng mga substring at mag-type ng dalawang character sa mga kahon sa ibaba.
- Kung dapat ding alisin ang "pagitan" ng mga character , lagyan ng check ang kahon na Kabilang ang mga delimiter .
- I-click ang Alisin .
Bilang isang halimbawa, tinatanggal namin ang lahat sa pagitan ng dalawang tilde character (~), at makuha ang perpektong nalinis na mga string bilang resulta:
Upang subukan ang iba pang mga kapaki-pakinabang na feature na kasama sa multi-functional na ito tool, hinihikayat ko kayong mag-download ng e bersyon ng pagpapahalaga sa dulo ng post na ito. Salamat sa pagbabasa at sana ay makita ka sa aming blog sa susunod na linggo!
Mga available na download
Alisin ang una o huling mga character - mga halimbawa (.xlsm file)
Ultimate Suite - pagsubok na bersyon (.exe file)
at isang puwang (*, ) sa kahon na Hanapin kung ano.Pakipansin na pinapalitan namin hindi lamang isang kuwit kundi isang kuwit at isang puwang upang maiwasan ang pangunguna mga puwang sa mga resulta. Kung ang iyong data ay pinaghihiwalay ng mga kuwit na walang mga puwang, pagkatapos ay gumamit ng asterisk na sinusundan ng kuwit (*,).
Upang tanggalin ang text sa pagitan ng dalawang kuwit , gumamit ng asterisk na napapalibutan ng mga kuwit (,*,).
Tip. Kung mas gusto mong paghiwalayin ng kuwit ang mga pangalan at numero ng telepono, pagkatapos ay mag-type ng kuwit (,) sa field na Palitan ng .
Alisin ang bahagi ng text gamit ang Flash Fill
Sa mga modernong bersyon ng Excel (2013 at mas bago), may isa pang madaling paraan upang matanggal ang text na nauuna o sumusunod sa isang partikular na character - ang tampok na Flash Fill. Narito kung paano ito gumagana:
- Sa isang cell sa tabi ng unang cell na may iyong data, i-type ang inaasahang resulta at pindutin ang Enter .
- Simulang mag-type ng naaangkop na halaga sa susunod na cell. Kapag naramdaman ng Excel ang pattern sa mga value na iyong ipinasok, magpapakita ito ng preview para sa natitirang mga cell na sumusunod sa parehong pattern.
- Pindutin ang Enter key upang tanggapin ang mungkahi.
Tapos na!
Alisin ang text gamit ang mga formula
Sa Microsoft Excel, maraming manipulasyon ng data na isinagawa sa pamamagitan ng paggamit ng mga inbuilt na feature ay maaari ding magawa gamit ang isang formula. Hindi tulad ng mga nakaraang pamamaraan, ang mga formula ay hindi gumagawa ng anumang mga pagbabago sa orihinal na data at nagbibigay sa iyo ng higit na kontrol saang mga resulta.
Paano alisin ang lahat pagkatapos ng isang partikular na character
Upang tanggalin ang text pagkatapos ng isang partikular na character, ang generic na formula ay:
LEFT( cell , SEARCH (" char ", cell ) -1)Dito, ginagamit namin ang SEARCH function para makuha ang posisyon ng character at ipasa ito sa LEFT function, kaya i-extract nito ang katumbas na bilang ng mga character mula sa simula ng string. Ibinabawas ang isang character sa numerong ibinalik ng SEARCH upang ibukod ang delimiter mula sa mga resulta.
Halimbawa, upang alisin ang bahagi ng isang string pagkatapos ng kuwit, ilalagay mo ang formula sa ibaba sa B2 at i-drag ito pababa sa B7 :
=LEFT(A2, SEARCH(",", A2) -1)
Paano alisin ang lahat bago ang isang partikular na character
Upang tanggalin ang bahagi ng isang text string bago ang isang partikular na character, ang ang generic na formula ay:
RIGHT( cell , LEN( cell ) - SEARCH(" char ", cell ))Dito, muli naming kinakalkula ang posisyon ng target na character sa tulong ng SEARCH, ibawas ito mula sa kabuuang haba ng string na ibinalik ng LEN, at ipasa ang pagkakaiba sa RIGHT function, kaya hinihila nito ang maraming mga character mula sa dulo ng string.
Halimbawa, upang alisin ang text bago ang kuwit, ang formula ay:
=RIGHT(A2, LEN(A2) - SEARCH(",", A2))
Sa aming kaso, ang kuwit ay sinusundan ng isang character na espasyo. Upang maiwasan ang mga nangungunang puwang sa mga resulta, binabalot namin ang core formula sa TRIM function:
=TRIM(RIGHT(A2, LEN(A2) - SEARCH(",", A2)))
Mga Tala:
- Parehosa mga halimbawa sa itaas ay ipinapalagay na mayroon lamang isang instance ng delimiter sa orihinal na string. Kung maraming paglitaw, aalisin ang text bago/pagkatapos ng unang pagkakataon .
- Ang function na SEARCH ay hindi case-sensitive , ibig sabihin, wala itong pinagkaiba sa pagitan lowercase at uppercase na mga character. Kung ang iyong partikular na character ay isang titik at gusto mong makilala ang letter case, pagkatapos ay gamitin ang case-sensitive FIND function sa halip na SEARCH.
Paano magtanggal ng text pagkatapos ng Nth na paglitaw ng isang character
Sa sitwasyon kung ang isang source string ay naglalaman ng maraming instance ng delimiter, maaaring kailanganin mong alisin ang text pagkatapos ng isang partikular na instance. Para dito, gamitin ang sumusunod na formula:
LEFT( cell , FIND("#", SUBSTITUTE( cell , " char ", "#" , n )) -1)Kung saan ang n ay ang paglitaw ng character pagkatapos na alisin ang text.
Ang panloob na lohika ng formula na ito ay nangangailangan ng paggamit ng ilang character wala iyon kahit saan sa source data, isang hash na simbolo (#) sa aming kaso. Kung nangyari ang character na ito sa iyong set ng data, gumamit ng ibang bagay sa halip na "#".
Halimbawa, para alisin ang lahat pagkatapos ng 2nd comma sa A2 (at ang comma mismo), ang formula ay:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Paano gumagana ang formula na ito:
Ang pangunahing bahagi ng formula ay ang FIND function na kinakalkula ang posisyon ng nthdelimiter (kuwit sa aming kaso). Ganito:
Pinapalitan namin ang 2nd comma sa A2 ng hash na simbolo (o anumang iba pang character na wala sa iyong data) sa tulong ng SUBSTITUTE:
SUBSTITUTE(A2, ",", "#", 2)
Ang resultang string ay papunta sa 2nd argument ng FIND, kaya hinahanap nito ang posisyon ng "#" sa string na iyon:
FIND("#", "Emma, Design# (102) 123-4568")
Sinasabi sa amin ng FIND na ang "#" ay ang ika-13 character sa tali. Upang malaman ang bilang ng mga character na nauuna dito, ibawas lang ang 1, at makakakuha ka ng 12 bilang resulta:
FIND("#", SUBSTITUTE(A2, ",", "#", 2)) - 1
Direktang pumupunta ang numerong ito sa argumentong num_chars ng LEFT na humihiling dito na kunin ang unang 12 character mula sa A2:
=LEFT(A2, 12)
Iyon na!
Paano magtanggal ng text bago ang Nth paglitaw ng isang character
Ang generic na formula para mag-alis ng substring bago ang isang partikular na character ay:
RIGHT(SUBSTITUTE( cell , " char ", "#", n ), LEN( cell ) - HANAPIN("#", SUBSTITUTE( cell , " char ", "#", n )) -1)Halimbawa, para tanggalin ang text bago ang 2nd comma sa A2, ang formula ay:
=RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Upang alisin ang isang leading space, muli naming ginagamit ang TRIM function bilang isang wrapper:
=TRIM(RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))))
Paano gumagana ang formula na ito:
Sa buod, nalaman namin kung gaano karaming mga character ang pagkatapos ng nth delimiter at kunin ang isang substring ng katumbas na haba mula sa kanan. Nasa ibaba ang formula break down:
Una, pinapalitan namin ng hash ang 2nd comma sa A2simbolo:
SUBSTITUTE(A2, ",", "#", 2)
Ang resultang string ay mapupunta sa text argument ng RIGHT:
RIGHT("Emma, Design# (102) 123-4568", …
Susunod, kailangan nating tukuyin kung gaano karaming mga character ang i-extract mula sa dulo ng string. Para dito, makikita natin ang posisyon ng simbolo ng hash sa string sa itaas (na 13):
FIND("#", SUBSTITUTE(A2, ",", "#", 2))
At ibawas ito sa kabuuang haba ng string (na katumbas ng 28):
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))
Ang pagkakaiba (15) ay napupunta sa pangalawang argumento ng RIGHT na nagtuturo dito na hilahin ang huling 15 character mula sa string sa unang argumento:
RIGHT("Emma, Design# (102) 123-4568", 15)
Ang output ay isang substring na " (102) 123-4568", na napakalapit sa gustong resulta, maliban sa isang nangungunang espasyo. Kaya, ginagamit namin ang TRIM function para maalis ito.
Paano mag-alis ng text pagkatapos ng huling paglitaw ng isang character
Kung sakaling ang iyong mga value ay pinaghihiwalay ng variable na bilang ng mga delimiter, ikaw maaaring gusto mong alisin ang lahat pagkatapos ng huling pagkakataon ng delimiter na iyon. Magagawa ito gamit ang sumusunod na formula:
LEFT( cell , FIND("#", SUBSTITUTE( cell , " char ", "# ", LEN( cell ) - LEN(SUBSTITUTE( cell , " char ", "")))) -1)Ipagpalagay na column A naglalaman ng iba't ibang impormasyon tungkol sa mga empleyado, ngunit ang halaga pagkatapos ng huling kuwit ay palaging isang numero ng telepono. Ang iyong layunin ay alisin ang mga numero ng telepono at panatilihin ang lahat ng iba pang detalye.
Upang makamit ang layunin, maaari mong alisin ang text pagkatapos ng huling kuwit sa A2 gamit itoformula:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))) -1)
Kopyahin ang formula sa column, at makukuha mo ang resultang ito:
Paano ito gumagana ang formula:
Ang diwa ng formula ay ang pagtukoy natin sa posisyon ng huling delimiter (kuwit) sa string at hilahin ang isang substring mula kaliwa hanggang sa delimiter. Ang pagkuha ng posisyon ng delimiter ay ang pinakamahirap na bahagi, at narito kung paano namin ito pinangangasiwaan:
Una, alam namin kung gaano karaming mga kuwit ang nasa orihinal na string. Para dito, pinapalitan namin ang bawat kuwit ng wala ("") at inihahatid ang resultang string sa function na LEN:
LEN(SUBSTITUTE(A2, ",",""))
Para sa A2, ang resulta ay 35, na bilang ng mga character sa A2 na walang mga kuwit.
Ibawas ang numero sa itaas mula sa kabuuang haba ng string (38 character):
LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))
… at makakakuha ka ng 3, na siyang kabuuang bilang ng mga kuwit sa A2 (at gayundin ang ordinal na numero ng huling kuwit).
Susunod, gagamitin mo ang pamilyar na kumbinasyon ng FIND at SUBSTITUTE function upang makuha ang posisyon ng huling kuwit sa string. Ang numero ng halimbawa (3rd comma sa aming kaso) ay ibinibigay ng nabanggit na LEN SUBSTITUTE formula:
FIND("#", SUBSTITUTE(A2, ",", "#", 3))
Lumilitaw na ang 3rd comma ay ang ika-23 character sa A2, ibig sabihin, kailangan namin para mag-extract ng 22 character bago ito. Kaya, inilagay namin ang formula sa itaas na minus 1 sa num_chars argument ng LEFT:
LEFT(A2, 23-1)
Paano mag-alis ng text bago ang huling paglitaw ng isang character
Upang tanggalinlahat bago ang huling instance ng isang partikular na character, ang generic na formula ay:
RIGHT( cell , LEN( cell ) - FIND("#", SUBSTITUTE( cell , " char ", "#", LEN( cell ) - LEN(SUBSTITUTE( cell , " char ", "")))))Sa aming sample na talahanayan, upang matanggal ang text bago ang huling kuwit, ang formula ay kukuha ng ganitong form:
=RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))))
Bilang isang pagtatapos, kami ilagay ito sa TRIM function upang alisin ang mga nangungunang puwang:
=TRIM(RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))))
Paano gumagana ang formula na ito:
Sa buod, nakukuha namin ang posisyon ng huling kuwit gaya ng ipinaliwanag sa nakaraang halimbawa at ibawas ito sa kabuuang haba ng string:
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))
Bilang resulta, nakukuha namin ang bilang ng character pagkatapos ng huling kuwit at ipasa ito sa RIGHT function, kaya dinadala nito ang maraming character mula sa dulo ng string.
Custom na function upang alisin ang text sa magkabilang panig ng isang character
Bilang nakita mo sa mga halimbawa sa itaas, maaari mong lutasin ang halos anumang kaso ng paggamit sa pamamagitan ng paggamit ng katutubong f ng Excel mga unction sa iba't ibang kumbinasyon. Ang problema ay kailangan mong tandaan ang ilang mga mapanlinlang na formula. Hmm, paano kung magsulat tayo ng sarili nating function para masakop ang lahat ng mga sitwasyon? Mukhang magandang ideya. Kaya, idagdag ang sumusunod na VBA code sa iyong workbook (ang mga detalyadong hakbang sa pagpasok ng VBA sa Excel ay narito):
Function RemoveText(str As String , delimiter As String , occurrence As Integer , is_after AsBoolean ) Dim delimiter_num, start_num, delimiter_len Bilang Integer Dim str_result Bilang String delimiter_num = 0 start_num = 1 str_result = "" delimiter_len = Len(delimiter) Para sa i = 1 Sa paglitaw delimiter_num = InStr(start_num, Comparestr, If delimiter_num, Comparestr, If delimiter < delimiter_num Pagkatapos start_num = delimiter_num + delimiter_len Tapusin Kung Susunod i Kung 0 < delimiter_num Then If True = is_after Then str_result = Mid(str, 1, start_num - delimiter_len - 1) Else str_result = Mid(str, start_num) End If End If RemoveText = str_result End FunctionAng aming function ay pinangalanan RemoveText at mayroon itong sumusunod na syntax:
RemoveText(string, delimiter, occurrence, is_after)Where:
String - ay ang orihinal na text string. Maaaring katawanin ng isang cell reference.
Delimiter - ang character bago/pagkatapos kung saan mag-aalis ng text.
Occurrence - ang instance ng delimiter.
Is_after - isang Boolean value na nagsasaad kung saang bahagi ng delimiter aalisin ang text. Maaaring isang character o isang sequence ng mga character.
- TRUE - tanggalin ang lahat pagkatapos ng delimiter (kabilang ang delimiter mismo).
- FALSE - tanggalin ang lahat bago ang delimiter (kabilang ang delimiter mismo).
Kapag naipasok na ang code ng function sa iyong workbook, maaari mong alisin ang mga substring mula sa mga cell gamit ang mga compact at eleganteng formula.
Halimbawa, upang burahin