Cihên spî û xetên vala li Excel bi karanîna Regex rakin

  • Vê Parve Bikin
Michael Brown

Dixwazin cîhên spî bi awayê herî bibandor bi rê ve bibin? Biwêjên rêkûpêk bikar bînin da ku hemî cîhên di şaneyek de jêbirin, çend cîhan bi karakterek yekane biguhezînin, tenê cîhên di navbera hejmaran de qut bikin û hêj bêtir.

Hûn kîjan daneya têketinê bikar tînin, hûn ê bi zorê rastî databasa bê cih. Di pir rewşan de, cîhê spî baş e - hûn wê bikar tînin da ku bi dîtbarî perçeyên cûda yên agahdariyê ji hev veqetînin da ku fêmkirina wê hêsantir bikin. Lêbelê, di hin rewşan de, dibe ku ew xirab bibe - cîhên zêde dikarin formulên we tevlihev bikin û pelên xebata we hema hema nekarbikin.

    Çima ji bo kêmkirina cîhên spî di Excel de îfadeya birêkûpêk bikar bînin?

    Berî ku em bikevin nav xirecira bikaranîna îfadeyên birêkûpêk ji bo rakirina cîhên spî yên di pelên xebatê Excel de, ez dixwazim pirsa ku di rêza yekem de tê bîra min - çima em hewceyê regexes in dema ku Excel jixwe TRIM heye fonksîyon?

    Ji bo ku ferqê fam bikin, werin em bibînin ka di her rewşê de cîhê spî çi tê hesibandin:

    • Fonksiyon TRIM-ya çêkirî tenê dikare karektera cîhê ku di pergala 7-bit ASCII de nirxa wê 32 heye.
    • Daxuyanên birêkûpêk dikarin çend formên cihê spî yên wekî cihê ( ), tab (\t), vegera barkirinê (\r) û nû destnîşan bikin. rêz (\n). Wekî din, karaktera cîhê spî (\s) heye ku van hemî celeban li hev dike û ji bo paqijkirina têketina xav zehf arîkar tê.daneyan.

    Dizanin ku bi rastî çi li paş perdeyê diqewime, ew pir hêsantir e ku meriv çareseriyekê bixebitîne, rast?

    Çawa di Excel de bêjeyên birêkûpêk çalak bikin

    Rastiyek naskirî ye ku Excel-ê-ji-derveyî îfadeyên birêkûpêk piştgirî nake. Ji bo çalakkirina wan, hûn hewce ne ku fonksiyonek VBA-ya xwerû biafirînin. Xwezî, me yek jixwe heye, bi navê RegExpReplace . Biserve, dema ku em li ser rakirinê diaxivin çima "guhezînin"? Di zimanê Excel de, "rakirin" tenê peyvek din e ji bo "bi rêzek vala veguherîne" :)

    Ji bo ku fonksiyonê li Excel xwe zêde bike, tenê koda wê ji vê rûpelê kopî bike, di edîtorê VBA-yê de bişopîne. , û pelê xwe wekî pirtûka xebatê ya çalakkirî ya makro (.xlsm) hilînin.

    Li vir hevoksaziya fonksiyonê ya ji bo referansa we heye:

    RegExpReplace(nivîs, nimûne, veguheztin, [nimûne_num] , [match_case])

    Sê argumanên pêşîn hewce ne, du yên dawîn vebijarkî ne.

    Li ku:

    • Nivîs - rêzika orîjînal ji bo bigerin.
    • Şablon - regeksa ku lê bigere.
    • Ciwazî - nivîsa ku lê were guheztin. Ji bo rakirina valahiya spî , hûnê vê argumanê bikin yek:
      • rêzika vala ("") ji bo ku bi temamî hemû cihan bibire
      • vala karakter (" ") ku li şûna gelek cihan karektereke yek cihê cihê bigire
    • Nimûneya_hejmar (vebijarkî) - hejmara nimûne. Di pir rewşan de, hûn ê wê ji holê rakin da ku hemî mînakan biguhezînin(pêşniyaz).
    • Civa_hevberdanê (vebijarkî) - nirxek Boolean nîşan dide ka bi hev re (RAST) an paşguhkirina (FALSE) ya nivîsê. Ji bo cîhê spî, ew ne girîng e û ji ber vê yekê jê hatî derxistin.

    Ji bo bêtir agahdarî, ji kerema xwe li fonksiyona RegExpReplace binêre.

    Çawa bi regex cîhê spî jêbirin - mînak

    Bi Fonksiyona RegExpReplace li pirtûka weya xebatê hat zêdekirin, werin em senaryoyên cihêreng yek bi yek bişopînin.

    Hemû cîhên spî bi karanîna regex rakin

    Ji bo rakirina hemî ciyên di rêzekê de, hûn tenê li her karakterek cîhê spî bigerin, di nav de valahiyek, tabelek, vegerek gerîdeyek, û xwarinek rêzek, û wan bi rêzek vala ("") biguhezînin.

    Pattern : \s+

    Veguheztin : ""

    Bihesibînin ku rêzika çavkaniyê di A5 de ye, formula di B5 de ev e:

    =RegExpReplace(A5, "\s+", "")

    Ji bo birêvebirina qalibên xwe hêsantir bike. , hûn dikarin regeksê têxin nav şaneyek pêşwext û bi karanîna referansek bêkêmasî ya wekî $A$2 wê ji formula re peyda bikin.

    Zêdetirî yek cîhê spî jêke

    Ji bo rakirina vala spî ya zêde (ango bêtir ji n yek ciyên li pey hev), heman regex \s+ bikar bînin, lê lihevhatinên ku hatine dîtin bi karekterek cîhê yekane veguherînin. 2>: " "

    =RegExpReplace(A5, "\s+", " ")

    Ji kerema xwe bala xwe bidin ku ev formula yek karaktera cîhê ne tenê di navberali jêr danehevê, bihesibînin ku hûn dixwazin hemî cîhên pêşeng / paşverû û hemî ji bilî yek cîhên navberê bişkînin, çend rêzan saxlem bihêlin. Ji bo bicihanîna peywirê, hûn ê du fonksiyonên RegExpReplace-ê yên cihêreng hewce bikin.

    Fonksiyona yekem gelek cîhan bi yek tîpek cîhê diguhezîne.

    =RegExpReplace(A5, " +", " ")

    Ya din ciyan jê dike ji serî û dawiya rêzekê:

    =RegExpReplace(A5, "^ +| +$", "")

    Tenê her du fonksiyonan li hev bixin:

    =RegExpReplace(RegExpReplace(A5, " +", " "), "^ +| +$", "")

    Û hûnê Encama bêkêmasî:

    Regex ku gelek ciyan bi yek karakterekê veguhezîne

    Heke hûn bixwazin hemî cîhan ji rêzekê derxînin û her komek cîhên li pey hev biguhezînin. bi karekterek taybetî, ya ku divê hûn bikin ev e:

    Pêşî, vê regexê bikar bînin da ku cîhên spî yên pêşeng û paşverû bişkînin:

    =RegExpReplace(A8, "^[\s]+|[\s]+$", "")

    Piştre, fonksiyona jorîn xizmetê bikin ji argumana text ya RegExpReplace-a din a ku yek an çend cîhên spî yên li pey hev bi karaktera ku hûn diyar dikin diguhezîne, mînak. daçek:

    Nabek : \s+

    Cihguhartin : -

    Bi texmîna rêzika çavkaniyê di A8 de ye, formula vî şeklî digire:

    =RegExpReplace(RegExpReplace(A8, "^[\s]+|[\s]+$", ""), "\s+", "-")

    An jî hûn dikarin qalib û guheztinan di şaneyên cihê de binivîsin mîna ku di dîmenê de têne xuyang kirin:

    Regex ji bo rakirina xêzên vala

    Li vir pirsek heye ku bikarhênerên ku di yek hucreyê de çend xetên wan hene, pir caran dipirsin: "Gelek xetên vala di şaneyên min de hene. Ma rêyek heye ku ez bigirimji wan xilas bike ji bilî derbasbûna her şaneyê û jêbirina her rêzê bi destan?" Bersiv: Ew hêsan e!

    Lihevhatina rêzikên vala yên ku yek karakterek wan tune ne ji destpêka ^ ya rêza niha heya rêza paşîn \n, regex ev e:

    Pattern : ^\n

    Eger xêzên we yên vala yên dîtbarî valahî an tabloyan hene, vê îfadeya rêkûpêk bikar bînin:

    Şablon : ^[\t ]*\n

    Tenê bi bikaranîna vê formulê regeksê bi rêzeka vala biguherîne, û hemû xêzên vala wê bi carekê ve biçin!

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

    Bi Amûrên RegEx rakirina valahiyên spî

    Mînakên jorîn tenê beşeke piçûk ji îmkanên ecêb ên ku ji hêla regexes ve hatine peyda kirin nîşan didin. Mixabin, ne hemî taybetiyên biwêjên birêkûpêk ên klasîk di VBA de hene.

    Xwezî, Amûrên RegEx yên ku bi Suite meya Ultimate re hene ji van sînoran bêpar in ji ber ku ew ji hêla motora .NET RegEx ya Microsoft ve têne hilberandin. ji hêla VBA RegExp ve nayê piştgirî kirin Belo w hûn ê mînakek weha birêkûpêkek birêkûpêk bibînin.

    Regex ji bo ku cihê di navbera hejmaran de jêke

    Di rêzika alfabetîk de, bihesibînin ku hûn dixwazin tenê valahiyên di navbera hejmaran de ji holê rakin, ji ber vê yekê rêzek wek "A 1 2 B" dibe "A 12 B".

    Ji bo ku valahiya spî ya di navbera her du jimaran de li hev bikin, hûn dikarin van nihêrînên jêrîn bikar bînin:

    Pattern : (?<=\d)\s+(?=\d)

    Ji bo afirandina formulek bingehînli ser regexesên jorîn, li vir du gavên hêsan hene ku têne kirin:

    1. Li ser tabloya Ablebits Data , di koma Text de, bikirtînin Regex Amûr .

    2. Li ser pencereya Amûrên Regex , daneyên çavkaniyê hilbijêrin, regeksa xwe binivîsin, Rake hilbijêrin. vebijêrk, û lêdana Rake bikirtînin.

      Ji bo ku encaman wek formul, ne nirx, bi dest bixin, ji bîr mekin ku hûn bişkoka Wek formulê têxin nîşan bidin.

    Di demekê de, hûn ê fonksiyona AblebitsRegexRemove bibînin ku di stûnek nû ya rastê daneya orîjînal de tê danîn.

    Alternatîf, hûn dikarin regexê di hin şaneyê de têkevin , bibêjin A5, û formula rasterast bixin nav şaneyê bi rêya qutiya diyalogê Fonksiyon Têxe , li wir AblebitsRegexRemove di binê AblebitsUDFs de hatiye kategorîzekirin.

    Ji ber ku ev fonksiyon bi taybetî ji bo rakirina rêzan hatî çêkirin, ew tenê du argumanan hewce dike - rêzika têketinê û regex:

    =AblebitsRegexRemove(A5, $A$2)

    Bi vî rengî meriv cîhan di nav de jêbirin Excel îfadeyên birêkûpêk bikar tîne. Ez spasiya te dikim ji bo xwendinê û li hêviya dîtina te di hefteya pêş de li ser bloga me me!

    Daxistinên berdest

    Bi regex-ê valahiyê rakin - mînak (pelê .xlsm)

    Suite Ultimate - Guhertoya ceribandinê (pelê .exe)

    peyv lê di serî û dawiya rêzekê de jî, ev ne baş e. Ji bo ku hûn ji valahiya spî ya sereke û paşverû xilas bibin, formula jorîn bixin nav fonksiyonek din a RegExpReplace ku cîhan ji serî û dawiyê qut dike:

    =RegExpReplace(RegExpReplace(A5, "\s+", " "), "^[\s]+|[\s]+$", "")

    Regex to valahiya spî ya sereke û paşde jê rake

    Ji bo lêgerîna cihê spî li destpêk an dawiya rêzekê, destpêka ^ û dawiya $ anchors bikar bîne.

    Cihê spî yê sereke :

    Nablo : ^[\s]+

    Trailing Ciyê spî:

    Nablo : [\s ]+$

    Pêşkêş û paşîn valahîya spî:

    Pattern : ^[\s]+

    Michael Brown dilxwazek teknolojiyê ya dilsoz e ku bi hewesek hêsankirina pêvajoyên tevlihev bi karanîna amûrên nermalavê ye. Bi zêdetirî deh salan ezmûnek di pîşesaziya teknolojiyê de, wî jêhatîbûna xwe di Microsoft Excel û Outlook, û her weha Google Sheets û Docs de pêş xist. Bloga Michael ji bo parvekirina zanyarî û pisporiya xwe bi kesên din re veqetandî ye, ji bo baştirkirina hilberî û karîgeriyê serişte û dersên hêsan-şopandinê peyda dike. Çi hûn pisporek demsalî ne an jî destpêkek in, bloga Michael ji bo ku hûn herî zêde ji van amûrên nermalava bingehîn sûd werbigirin, têgihiştinên hêja û şîretên pratîkî pêşkêşî dike.