Regex ili kuondoa herufi au maandishi fulani katika Excel

  • Shiriki Hii
Michael Brown
hoja imeachwa, mechi zote zinazopatikana huondolewa. Ili kufuta zinazolingana mahususi, fafanua nambari ya mfano.

Katika mifuatano iliyo hapa chini, tuseme ungependa kufuta nambari ya agizo la kwanza. Nambari zote kama hizo huanza na alama ya heshi (#) na huwa na tarakimu 5 haswa. Kwa hivyo, tunaweza kuzitambua kwa kutumia regex hii:

Muundo : #\d{5}\b

Neno mpaka \b linabainisha kuwa kamba ndogo inayolingana haiwezi kuwa. sehemu ya mfuatano mkubwa zaidi kama vile #10000001.

Ili kuondoa zote zinazolingana, hoja ya instance_num haijafafanuliwa:

=RegExpReplace(A5, "#\d{5}\b", "")

Ili kukomesha tukio la kwanza pekee, tuliweka hoja ya instance_num kuwa 1:

=RegExpReplace(A5, "#\d{5}\b", "", 1)

Regex ili kuondoa herufi fulani

Ili kuvua herufi fulani kutoka kwa mfuatano, andika tu herufi zote zisizohitajika na uzitenganishe kwa upau wima.sintaksia isiyo na mipaka ya VBA RegExp, na pili, hauhitaji kuingiza msimbo wowote wa VBA katika vitabu vyako vya kazi kwani ujumuishaji wote wa msimbo unafanywa nasi kwa upande wa nyuma.

Sehemu yako ya kazi ni kuunda usemi wa kawaida na itumie kwa chaguo la kukokotoa :) Acha nikuonyeshe jinsi ya kufanya hivyo kwa mfano wa vitendo.

Jinsi ya kuondoa maandishi kwenye mabano na mabano kwa kutumia regex

Katika mifuatano mirefu ya maandishi, taarifa isiyo muhimu sana. mara nyingi hufungwa katika [mabano] na (mabano). Je, unawezaje kuondoa maelezo hayo yasiyohusika yanayoweka data nyingine zote?

Kwa hakika, tayari tumeunda regex sawa ya kufuta lebo za html, yaani, maandishi ndani ya mabano ya pembe. Ni wazi, mbinu sawa zitafanya kazi kwa mabano ya mraba na mviringo pia.

Muundo : (\(.*?\))

Umewahi kufikiria jinsi Excel ingekuwa na nguvu ikiwa mtu angeboresha kisanduku chake cha vidhibiti kwa vielezi vya kawaida? Hatukufikiria tu bali kulifanyia kazi :) Na sasa, unaweza kuongeza kitendakazi hiki kizuri cha RegEx kwenye vitabu vyako vya kazi na ufute kamba ndogo zinazolingana na mchoro kwa muda mfupi!

Wiki iliyopita, tuliangalia jinsi ya kutumia misemo ya kawaida kuchukua nafasi ya kamba katika Excel. Kwa hili, tuliunda chaguo maalum la Kubadilisha Regex. Kama ilivyotokea, kazi huenda zaidi ya matumizi yake ya msingi na haiwezi tu kuchukua nafasi ya kamba lakini pia kuziondoa. Hiyo inawezaje kuwa? Kwa upande wa Excel, kuondoa thamani si kitu kingine ila kuibadilisha kwa mfuatano tupu, jambo ambalo utendakazi wetu wa Regex ni mzuri sana!

Kitendaji cha VBA RegExp ili kuondoa mifuatano katika Excel

Kama sote tunavyojua, misemo ya kawaida haitumiki katika Excel kwa chaguo-msingi. Ili kuwawezesha, unahitaji kuunda kazi yako iliyofafanuliwa na mtumiaji. Habari njema ni kwamba kazi kama hiyo tayari imeandikwa, imejaribiwa, na iko tayari kutumika. Unachotakiwa kufanya ni kunakili msimbo huu, kuubandika kwenye kihariri chako cha VBA, na kisha kuhifadhi faili yako kama kitabu cha kazi kilichowezeshwa kwa jumla (.xlsm).

Kitendaji kina kipengee cha kukokotoa sintaksia ifuatayo:

RegExpReplace(maandishi, mchoro, uingizwaji, [instance_num], [match_case])

Hoja tatu za kwanza zinahitajika, mbili za mwisho ni za hiari.

Wapi:

  • Nakala - mfuatano wa maandishi wa kutafutainawezekana hadi ipate mabano ya kufunga.

Muundo wowote utakaochagua, matokeo yatakuwa sawa kabisa.

Kwa mfano, kuondoa lebo zote za html kutoka kwa mfuatano katika A5 na kuacha maandishi, fomula ni:

=RegExpReplace(A5, "]*>", "")

Au unaweza kutumia kihesabu cha uvivu kama inavyoonyeshwa kwenye picha ya skrini:

Suluhisho hili linafanya kazi kikamilifu kwa maandishi moja (safu 5 - 9). Kwa maandishi mengi (safu 10 - 12), matokeo hayana shaka - maandishi kutoka kwa lebo tofauti huunganishwa kuwa moja. Je, hii ni sahihi au la? Ninaogopa, sio kitu ambacho kinaweza kuamua kwa urahisi - yote inategemea uelewa wako wa matokeo yaliyohitajika. Kwa mfano, katika B11, matokeo "A1" yanatarajiwa; ukiwa katika B10, unaweza kutaka "data1" na "data2" zitenganishwe na nafasi.

Ili kuondoa lebo za html na kutenganisha maandishi yaliyosalia na nafasi, unaweza kuendelea kwa njia hii:

30>

  • Badilisha lebo kwa nafasi " ", si mifuatano tupu:
  • =RegExpReplace(A5, "]*>", " ")

  • Punguza nafasi nyingi hadi herufi moja ya nafasi:

    =RegExpReplace(RegExpReplace(A5, "]*>", " "), " +", " ")

  • Punguza nafasi zinazoongoza na zinazofuata:

    =TRIM(RegExpReplace(RegExpReplace(A5, "]*>", " "), " +", " "))

  • matokeo yataonekana hivi:

    Ablebits Regex Remove Tool

    Ikiwa umepata nafasi ya kutumia Ultimate Suite yetu ya Excel, labda tayari umegundua Zana mpya za Regex zilizoletwa na toleo la hivi majuzi. Uzuri wa vipengele hivi vya .NET kulingana na Regex ni kwamba, kwanza, vinaauni usemi kamili wa kawaidachaguo la Ondoa , na ubofye Ondoa .

    Ili kupata matokeo kama fomula, sio thamani, chagua kisanduku cha kuteua Ingiza kama fomula .

    Ili kuondoa maandishi ndani ya mabano kutoka kwa mifuatano katika A2:A5, tunasanidi mipangilio. kama ifuatavyo:

    Kutokana na hayo, kitendakazi cha AblebitsRegexRemove kinawekwa kwenye safu wima mpya karibu na data yako asili.

    Kitendakazi kinaweza pia kuingizwa moja kwa moja kwenye kisanduku kupitia kisanduku cha kidadisi cha Ingiza Kazi , ambapo kimeainishwa chini ya AblebitsUDFs .

    Kama AblebitsRegexRemove imeundwa ili kuondoa maandishi, inahitaji hoja mbili pekee - mfuatano wa chanzo na regex. Vigezo vyote viwili vinaweza kufafanuliwa moja kwa moja katika fomula au kutolewa kwa njia ya marejeleo ya seli. Ikihitajika, chaguo hili la kukokotoa maalum linaweza kutumika pamoja na zile za asili.

    Kwa mfano, ili kupunguza nafasi za ziada katika mifuatano inayotokana, unaweza kutumia kitendakazi cha TRIM kama kanga:

    =TRIM(AblebitsRegexRemove(A5, $A$2))

    Hiyo ndiyo jinsi ya kuondoa mifuatano katika Excel kwa kutumia misemo ya kawaida. Ninakushukuru kwa kusoma na kutarajia kukuona kwenye blogu yetu wiki ijayo!

    Vipakuliwa vinavyopatikana

    Ondoa mifuatano ukitumia regex - mifano (.xlsm file)

    Ultimate Suite - toleo la majaribio (.exe faili)

    katika.
  • Muundo - usemi wa kawaida wa kutafuta.
  • Uingizwaji - maandishi ya kubadilisha nayo. Ili kuondoa mifuatano inayolingana na mchoro, tumia mfuatano tupu ("") badala yake.
  • Instance_num (si lazima) - mfano wa kubadilisha. badala. Ikiondolewa, zote zinazolingana zilizopatikana zitabadilishwa (chaguo-msingi).
  • Match_case (si lazima) - thamani ya Boolean inayoonyesha kama italingana au kupuuza herufi ya maandishi. Kwa ulinganifu ambao ni nyeti kwa kesi, tumia TRUE (chaguo-msingi); kwa hali isiyojali - FALSE.
  • Kwa maelezo zaidi, tafadhali angalia kipengele cha RegExpReplace.

    Kidokezo. Katika hali rahisi, unaweza kuondoa herufi maalum au maneno kutoka kwa seli na fomula za Excel. Lakini misemo ya kawaida hutoa chaguo nyingi zaidi kwa hili.

    Jinsi ya kuondoa mifuatano kwa kutumia maneno ya kawaida - mifano

    Kama ilivyotajwa hapo juu, ili kuondoa sehemu za maandishi yanayolingana na mchoro, utazibadilisha. na kamba tupu. Kwa hivyo, fomula ya jumla huchukua umbo hili:

    RegExpReplace(text, pattern, "", [instance_num], [match_case])

    Mifano iliyo hapa chini inaonyesha utekelezaji mbalimbali wa dhana hii ya msingi.

    Ondoa. zote zinazolingana au zinazolingana mahususi

    Kitendaji cha RegExpReplace kimeundwa ili kupata mifuatano yote inayolingana na regex fulani. Ni matukio gani ya kuondoa yanadhibitiwa na hoja ya 4 ya hiari, inayoitwa instance_num .

    Chaguo-msingi ni "zote zinazolingana" - wakati instance_num opereta unganisha (&) na vitendaji vya maandishi kama vile KULIA, KATI na KUSHOTO.

    Kwa mfano, kuandika nambari zote za simu katika umbizo la (123) 456-7890, fomula ni:

    ="("&LEFT(B5, 3)&") "&MID(B5, 4, 3)&"-"&RIGHT(B5, 4)

    Ambapo B5 ni pato la chaguo la kukokotoa la RegExpReplace.

    Ondoa herufi maalum kwa kutumia regex

    Katika mojawapo ya mafunzo yetu, tuliangalia jinsi ya kuondoa wahusika zisizohitajika katika Excel kwa kutumia inbuilt na desturi kazi. Maneno ya kawaida hufanya mambo kuwa rahisi sana! Badala ya kuorodhesha herufi zote za kufuta, taja tu zile unazotaka kuweka :)

    Mchoro unatokana na alama za wahusika zilizokanushwa - caret huwekwa ndani ya darasa la wahusika [^ ] ili kulinganisha herufi yoyote SI kwenye mabano. Kikadiriaji + huilazimisha kuchukulia herufi zinazofuatana kama zinazolingana, ili ubadilishaji ufanywe kwa kamba ndogo inayolingana badala ya kila herufi mahususi.

    Kulingana na mahitaji yako, chagua mojawapo ya regeksi zifuatazo.

    Ili kuondoa vibambo zisizo za alphanumeric , yaani vibambo vyote isipokuwa herufi na tarakimu:

    Muundo : [^0-9a-zA-Z] +

    Ili kuondoa herufi zote isipokuwa herufi , tarakimu na nafasi :

    Muundo : [^0-9a-zA-Z ]+

    Kufuta vibambo vyote isipokuwa herufi , tarakimu na chini ya chini , unaweza kutumia \ W ambayo inawakilisha herufi yoyote ambayo SIYO herufi na nambariunderscore:

    Muundo : \W+

    Ikiwa ungependa kuhifadhi herufi zingine , k.m. alama za uakifishaji, ziweke ndani ya mabano.

    Kwa mfano, ili kuvua herufi yoyote isipokuwa herufi, tarakimu, kipindi, koma au nafasi, tumia regex ifuatayo:

    Muundo : [^0-9a-zA-Z\., ]+

    Hii imefanikiwa kuondoa herufi zote maalum, lakini nafasi nyeupe zaidi imesalia.

    Ili kurekebisha hili, unaweza kuweka kitendakazi kilicho hapo juu kuwa kingine ambacho kinachukua nafasi ya nafasi nyingi kwa herufi moja ya nafasi.

    =RegExpReplace(RegExpReplace(A5,$A$2,""), " +", " ")

    Au tumia tu chaguo la kukokotoa asilia la TRIM na madoido sawa. :

    =TRIM(RegExpReplace(A5, $A$2, ""))

    Regex ili kuondoa herufi zisizo na nambari

    Ili kufuta herufi zote zisizo nambari kutoka kwa mfuatano, unaweza kutumia ama fomula hii ndefu au mojawapo ya regeksi rahisi sana zilizoorodheshwa hapa chini.

    Linganisha herufi yoyote ambayo SI tarakimu:

    Muundo : \D+

    Ondoa herufi zisizo za nambari kwa kutumia madarasa yaliyopuuzwa:

    Muundo : [^0-9]+

    Muundo : [^\d] +

    Kidokezo. Ikiwa lengo lako ni kuondoa maandishi na kumwaga nambari zilizosalia katika seli tofauti au kuziweka zote katika kisanduku kimoja kilichotenganishwa na kikomo maalum, basi tumia chaguo la kukokotoa la RegExpExtract kama ilivyofafanuliwa katika Jinsi ya kutoa nambari kutoka kwa mfuatano kwa kutumia maneno ya kawaida.

    Regex kuondoa kila kitu baada ya nafasi

    Ili kufuta kila kitu baada ya nafasi, tumia nafasi ( ) auwhitespace (\s) herufi kupata nafasi ya kwanza na .* ili kulinganisha herufi zozote baada yake.

    Ikiwa una mifuatano ya mstari mmoja ambayo ina nafasi za kawaida pekee (thamani 32 katika mfumo wa 7-bit ASCII) , haijalishi ni ipi kati ya regexes hapa chini unayotumia. Ikiwa kuna mifuatano ya mistari mingi, inaleta mabadiliko.

    Kuondoa kila kitu baada ya herufi ya nafasi , tumia regex hii:

    Mchoro : " .*"

    =RegExpReplace(A5, " .*", "")

    Mfumo huu utaondoa chochote baada ya nafasi ya kwanza katika kila mstari . Ili matokeo yaonekane ipasavyo, hakikisha umewasha Wrap Text.

    Ili kuvua kila kitu baada ya nafasi nyeupe (pamoja na nafasi, kichupo, urejeshaji wa gari na laini mpya), regex. ni:

    Muundo : \s.*

    =RegExpReplace(A5, "\s.*", "")

    Kwa sababu \s inalingana na aina chache tofauti za nafasi nyeupe ikijumuisha laini mpya (\n), fomula hii hufuta kila kitu baada ya nafasi ya kwanza kwenye kisanduku, haijalishi kuna mistari mingapi ndani yake.

    Regex ili kuondoa maandishi baada ya maalum. herufi

    Kwa kutumia mbinu kutoka kwa mfano uliopita, unaweza kufuta maandishi baada ya herufi yoyote unayobainisha.

    Ili kushughulikia kila mstari kivyake:

    Muundo wa jumla : char.*

    Katika mifuatano ya mstari mmoja, hii itaondoa kila kitu baada ya char . Katika mifuatano ya mistari mingi, kila mstari utachakatwa kibinafsi kwa sababu katika ladha ya VBA Regex, kipindi (.) kinalingana na herufi yoyote isipokuwa mpya.mwanzo wa mfuatano ^, tunalinganisha herufi sifuri au zaidi zisizo za nafasi [^ ]* ambazo hufuatwa mara moja na nafasi moja au zaidi " +". Sehemu ya mwisho imeongezwa ili kuzuia nafasi zinazoweza kuongoza katika matokeo.

    Ili kuondoa maandishi kabla ya nafasi ya kwanza katika kila mstari, fomula imeandikwa katika hali chaguomsingi ya "zote zinazolingana" ( instance_num imeachwa):

    =RegExpReplace(A5, "^[^ ]* +", "")

    Ili kufuta maandishi kabla ya nafasi ya kwanza katika mstari wa kwanza, na kuacha mistari mingine yote ikiwa sawa, hoja ya instance_num imewekwa kuwa 1:

    =RegExpReplace(A5, "^[^ ]* +", "", 1)

    Regex kuondoa kila kitu kabla ya herufi

    Njia rahisi zaidi ya kuondoa maandishi yote kabla ya herufi mahususi ni kutumia regex. kama hii:

    Muundo wa jumla : ^[^char]*char

    Ikitafsiriwa katika lugha ya binadamu, inasema: "tangu mwanzo wa uzi uliotiwa nanga na ^ , linganisha herufi 0 au zaidi isipokuwa char [^char]* hadi tukio la kwanza la char .

    Kwa mfano, kufuta maandishi yote kabla ya koloni ya kwanza. , tumia usemi huu wa kawaida:

    Pattern : ^[^:]*:

    Ili kuepuka kuongoza nafasi katika matokeo, ongeza herufi ya nafasi nyeupe \s* kwenye mwisho. Hii itaondoa kila kitu g kabla ya koloni ya kwanza na upunguze nafasi zozote baada yake:

    Muundo : ^[^:]*:\s*

    =RegExpReplace(A5, "^[^:]*:\s*", "")

    Kidokezo. Kando na maneno ya kawaida, Excel ina njia zake za kuondoa maandishi kwa nafasi au mechi. Ili kujifunza jinsi ya kukamilisha kazi na fomula asili,tafadhali angalia Jinsi ya kuondoa maandishi kabla au baada ya herufi katika Excel.

    Regex kuondoa kila kitu isipokuwa

    Ili kuondoa herufi zote kwenye mfuatano isipokuwa zile unazotaka kuhifadhi, tumia aina za herufi zilizopuuzwa.

    Kwa mfano, kuondoa herufi zote isipokuwa herufi ndogo. na nukta, regex ni:

    Muundo : [^a-z\.]+

    Kwa kweli, tungeweza kufanya bila kihesabu + hapa kwani chaguo la kukokotoa linachukua nafasi ya zote. kupatikana mechi. Kikadiriaji kinaifanya iwe haraka zaidi - badala ya kushughulikia kila herufi moja moja, unabadilisha kamba ndogo.

    =RegExpReplace(A5, "[^a-z\.]+", "")

    Regex ili kuondoa lebo za html katika Excel.

    Kwanza, ikumbukwe kwamba HTML si lugha ya kawaida, kwa hivyo kuichanganua kwa kutumia misemo ya kawaida sio njia bora. Hiyo ilisema, regexes kwa hakika inaweza kusaidia kuondoa vitambulisho kutoka kwenye seli zako ili kufanya mkusanyiko wako wa data uwe safi zaidi.

    Kwa kuzingatia kwamba lebo za html kila wakati huwekwa ndani ya mabano ya pembeni , unaweza kuzipata kwa kutumia mojawapo ya regeksi zifuatazo.

    Daraja lisilofaa:

    Muundo : ]*>

    Hapa, tunalinganisha mabano ya pembe ya ufunguzi, ikifuatiwa na matukio sufuri au zaidi ya herufi yoyote isipokuwa mabano ya pembe ya kufunga [^>]* hadi mabano ya pembe ya kufunga iliyo karibu zaidi.

    Tafuta kwa uvivu:

    Muundo :

    Hapa, tunalingana chochote kutoka kwa mabano ya kwanza ya ufunguzi hadi mabano ya kwanza ya kufunga. Alama ya swali hulazimisha .* kuoanisha herufi chache kamaline.

    Ili kuchakata mistari yote kama mfuatano mmoja:

    Muundo wa jumla : char(.

    Michael Brown ni mpenda teknolojia aliyejitolea na mwenye shauku ya kurahisisha michakato changamano kwa kutumia zana za programu. Akiwa na uzoefu wa zaidi ya muongo mmoja katika tasnia ya teknolojia, ameboresha ujuzi wake katika Microsoft Excel na Outlook, pamoja na Majedwali ya Google na Hati. Blogu ya Michael imejitolea kushiriki maarifa na ujuzi wake na wengine, kutoa vidokezo na mafunzo ambayo ni rahisi kufuata ili kuboresha tija na ufanisi. Iwe wewe ni mtaalamu aliyebobea au umeanza, blogu ya Michael inatoa maarifa muhimu na ushauri wa vitendo ili kupata manufaa zaidi kutoka kwa zana hizi muhimu za programu.