Jedwali la yaliyomo
Je, ungependa kushughulikia nafasi nyeupe kwa njia bora zaidi? Tumia semi za kawaida ili kuondoa nafasi zote katika kisanduku, kubadilisha nafasi nyingi kwa herufi moja, punguza nafasi kati ya nambari pekee na zaidi.
Data yoyote ya ingizo unayotumia, ni vigumu sana kupata seti ya data bila nafasi. Katika hali nyingi, nafasi nyeupe ni nzuri - unaitumia kutenganisha vipande tofauti vya habari ili kurahisisha kutambulika. Katika hali zingine, hata hivyo, inaweza kuwa mbaya - nafasi za ziada zinaweza kuvuruga fomula zako na kufanya laha zako za kazi zishindwe kudhibitiwa.
Kwa nini utumie usemi wa kawaida kupunguza nafasi nyeupe katika Excel?
Kabla hatujaingia kwenye ujanja wa kutumia misemo ya kawaida kuondoa nafasi nyeupe katika laha za kazi za Excel, ningependa kushughulikia swali linalokuja akilini kwanza - kwa nini tunahitaji regexes wakati Excel tayari ina TRIM. kazi?
Ili kuelewa tofauti, hebu tuone ni nini kinachukuliwa kuwa nyeupe katika kila kisa:
- Kitendaji cha TRIM kilichojengewa ndani kinaweza tu kuvua bambo nafasi ambayo ina thamani ya 32 katika mfumo wa 7-bit ASCII.
- Semi za kawaida zinaweza kutambua aina chache tofauti za nafasi nyeupe kama vile nafasi ( ), kichupo (\t), urejeshaji wa gari (\r), na mpya. mstari (\n). Zaidi ya hayo, kuna bambo nyeupe (\s) inayolingana na aina hizi zote na husaidia sana kusafisha ingizo ghafi.data.
Kujua hasa kinachotokea nyuma ya pazia, ni rahisi zaidi kusuluhisha, sivyo?
Jinsi ya kuwezesha usemi wa kawaida katika Excel
Ni ukweli unaojulikana kuwa Excel ya nje ya kisanduku haitumii usemi wa kawaida. Ili kuwawezesha, unahitaji kuunda kazi ya kawaida ya VBA. Kwa bahati nzuri, tayari tunayo moja, inayoitwa RegExpReplace . Subiri, kwa nini "badilisha" wakati tunazungumza juu ya kuondoa? Katika lugha ya Excel, "ondoa" ni neno lingine la "badilisha kwa kamba tupu" :)
Ili kuongeza kitendakazi kwenye Excel yako, nakili tu msimbo wake kutoka kwa ukurasa huu, ubandike kwenye kihariri cha VBA. . , [match_case])
Hoja tatu za kwanza zinahitajika, mbili za mwisho ni za hiari.
Wapi:
- Maandishi - mfuatano wa asili wa tafuta ndani.
- Muundo - regex ya kutafuta.
- Uingizwaji - maandishi ya kubadilisha nayo. Ili kuondoa nafasi nyeupe , ungeweka hoja hii iwe:
- kamba tupu ("") ili kupunguza nafasi zote
- nafasi herufi (" ") ili kubadilisha nafasi nyingi kwa herufi moja ya nafasi
- Instance_num (hiari) - nambari ya mfano. Katika hali nyingi, utaiacha ili kuchukua nafasi ya matukio yote(chaguo-msingi).
- Match_case (si lazima) - thamani ya Boolean inayoonyesha kama inalingana (TRUE) au kupuuza (FALSE) herufi ya maandishi. Kwa spacespace, haina umuhimu na kwa hivyo imeachwa.
Kwa maelezo zaidi, tafadhali angalia kitendakazi cha RegExpReplace.
Jinsi ya kuondoa whitespace kwa regex - mifano
Na Kitendaji cha RegExpReplace kimeongezwa kwenye kitabu chako cha kazi, hebu tushughulikie matukio tofauti moja baada ya nyingine.
Ondoa nafasi zote nyeupe kwa kutumia regex
Ili kuondoa nafasi zote katika mfuatano, unatafuta kwa urahisi herufi yoyote ya nafasi nyeupe, ikijumuisha nafasi, kichupo, urejeshaji wa kubeba, na mlisho wa laini, na ubadilishe kwa mfuatano tupu ("").
Muundo : \s+
1>Uingizwaji : ""
Ikizingatiwa kuwa mfuatano wa chanzo uko katika A5, fomula katika B5 ni:
=RegExpReplace(A5, "\s+", "")
Ili kurahisisha kudhibiti ruwaza zako. , unaweza kuingiza regex katika kisanduku kilichobainishwa awali na kuisambaza kwa fomula kwa kutumia marejeleo kamili kama $A$2, kwa hivyo anwani ya seli itasalia bila kubadilika wakati wa kunakili fomula chini ya safu wima.
=RegExpReplace(A5, $A$2, "")
Ondoa zaidi ya nafasi nyeupe
Ili kuondoa nafasi nyeupe ya ziada (yaani zaidi ya tha n nafasi moja zinazofuatana), tumia regex \s+ sawa lakini ubadilishe mechi zilizopatikana kwa herufi moja ya nafasi.
Muundo : \s+
Uwekaji 2>: " "
=RegExpReplace(A5, "\s+", " ")
Tafadhali zingatia kwamba fomula hii inahifadhi herufi moja ya nafasi sio tu kati yachini ya seti ya data, tuseme ungetaka kupunguza nafasi zote zinazoongoza/zinazofuata na nafasi zote isipokuwa moja kati, kuweka mistari mingi ikiwa sawa. Ili kutimiza jukumu hili, utahitaji vitendaji viwili tofauti vya RegExpReplace.
Chaguo za kukokotoa za kwanza hubadilisha nafasi nyingi kwa herufi moja ya nafasi.
=RegExpReplace(A5, " +", " ")
Nyingine huondoa nafasi. kutoka mwanzo na mwisho wa mstari:
=RegExpReplace(A5, "^ +| +$", "")
Weka tu vitendaji viwili kimoja hadi kingine:
=RegExpReplace(RegExpReplace(A5, " +", " "), "^ +| +$", "")
Na utapata matokeo kamili:
Regex ili kubadilisha nafasi nyingi kwa herufi moja
Ikiwa ungependa kuondoa nafasi zote kutoka kwa mfuatano na kubadilisha kila kikundi cha nafasi zinazofuatana. ukiwa na herufi maalum, hivi ndivyo unahitaji kufanya:
Kwanza, tumia regex hii kupunguza nafasi nyeupe zinazoongoza na zinazofuata:
=RegExpReplace(A8, "^[\s]+|[\s]+$", "")
Kisha, tumikia kitendakazi kilicho hapo juu. kwa maandishi hoja ya RegExpReplace nyingine ambayo inachukua nafasi ya nafasi nyeupe moja au zaidi mfululizo kwa herufi unayobainisha, k.m. a hyphen:
Muundo : \s+
Ubadilishaji : -
Kwa kuchukulia mfuatano wa chanzo uko katika A8, fomula inachukua umbo hili:
=RegExpReplace(RegExpReplace(A8, "^[\s]+|[\s]+$", ""), "\s+", "-")
Au unaweza kuingiza ruwaza na vibadilishaji katika visanduku tofauti kama inavyoonyeshwa kwenye picha ya skrini:
Regex kuondoa mistari tupu
Hili hapa ni swali ambalo watumiaji walio na laini nyingi kwenye seli moja huuliza mara kwa mara: "Kuna mistari mingi tupu kwenye seli zangu. Je, kuna njia yoyote ya kupatakuziondoa zaidi ya kupitia kila seli na kufuta kila mstari mwenyewe?" Jibu: Hilo ni rahisi!
Kulinganisha mistari tupu ambayo haina herufi moja kuanzia mwanzo ^ ya mstari wa sasa hadi mstari unaofuata \n, regex ni:
Muundo : ^\n
Ikiwa mistari yako tupu inayoonekana ina nafasi au vichupo, tumia usemi huu wa kawaida:
Muundo : ^[\t ]*\n
Badilisha tu regex kwa mfuatano tupu ukitumia fomula hii, na mistari yote tupu itaondoka mara moja!
=RegExpReplace(A5, $A$2, "")
Kuondoa nafasi nyeupe kwa Zana za RegEx
Mifano iliyo hapo juu imeonyesha sehemu ndogo tu ya uwezekano wa ajabu unaotolewa na regexes. Kwa bahati mbaya, si wote vipengele vya usemi wa kawaida wa kawaida vinapatikana katika VBA.
Kwa bahati, Zana za RegEx zilizojumuishwa na Ultimate Suite yetu hazina vikwazo hivi kwa vile zinachakatwa na injini ya Microsoft ya .NET RegEx.Hii hukuruhusu kuunda mifumo ya kisasa zaidi ambayo hazitumiki na VBA RegExp. Belo w utapata mfano wa usemi kama huu wa kawaida.
Regex ili kuondoa nafasi kati ya nambari
Katika mfuatano wa alphanumeric, tuseme ungependa kuondoa nafasi nyeupe kati ya nambari pekee, ili mfuatano kama vile "A 1 2 B" inakuwa "A 12 B".
Ili kulinganisha nafasi nyeupe kati ya tarakimu zozote mbili, unaweza kutumia mwonekano ufuatao:
Muundo : (?<=\d)\s+(?=\d)
Ili kuunda fomula kulingana nakwenye regeksi zilizo hapo juu, hapa kuna hatua mbili rahisi kutekeleza:
- Kwenye kichupo cha Ablebits Data , katika Nakala kikundi, bofya Regex Zana .
- Kwenye kidirisha cha Zana za Regex , chagua data chanzo, weka regex yako, chagua Ondoa chaguo, na ugonge Ondoa .
Ili kupata matokeo kama fomula, si thamani, kumbuka kuweka tiki kwenye Ingiza kama fomula kisanduku tiki.
Baada ya muda mfupi, utaona kitendakazi cha AblebitsRegexRemove kikiingizwa kwenye safu wima mpya upande wa kulia wa data asili.
Au, unaweza kuingiza regex katika kisanduku fulani. , sema A5, na uweke fomula moja kwa moja kwenye kisanduku ukitumia Ingiza Kitendaji kisanduku cha mazungumzo, ambapo AblebitsRegexRemove imeainishwa chini ya AblebitsUDFs .
Kwa vile chaguo hili la kukokotoa limeundwa mahususi kwa ajili ya kuondoa mifuatano, inahitaji hoja mbili pekee - kamba ya ingizo na regex:
=AblebitsRegexRemove(A5, $A$2)
Ndiyo jinsi ya kuondoa nafasi katika Excel kwa kutumia maneno ya kawaida. Ninakushukuru kwa kusoma na kutarajia kukuona kwenye blogu yetu wiki ijayo!
Vipakuliwa vinavyopatikana
Ondoa whitespace na regex - mifano (.xlsm file)
Ultimate Suite - toleo la majaribio (.exe faili)
maneno lakini pia mwanzo na mwisho wa kamba, ambayo si nzuri. Ili kuondoa nafasi nyeupe inayoongoza na inayofuata, weka fomula iliyo hapo juu kwenye chaguo jingine la kukokotoa la RegExpReplace ambalo huondoa nafasi kuanzia mwanzo na mwisho: =RegExpReplace(RegExpReplace(A5, "\s+", " "), "^[\s]+|[\s]+$", "")
Regex hadi ondoa nafasi nyeupe inayoongoza na inayofuata
Ili kutafuta nafasi nyeupe mwanzoni au mwisho wa mstari, tumia kianzishi ^ na mwisho $ nanga.
Inayoongoza nafasi nyeupe:
Muundo : ^[\s]+
Trailing whitespace:
Muundo : [\s ]+$
Inayoongoza na inayofuata nafasi nyeupe:
Muundo : ^[\s]+