Հեռացրեք բացատներն ու դատարկ տողերը Excel-ում՝ օգտագործելով Regex

  • Կիսվել Սա
Michael Brown

Ցանկանու՞մ եք ամենաարդյունավետ կերպով կարգավորել բացատները: Օգտագործեք կանոնավոր արտահայտություններ՝ հեռացնելու բոլոր բացատները բջիջում, փոխարինեք մի քանի բացատները մեկ նիշով, կրճատեք բացատները միայն թվերի միջև և ավելին: տվյալների հավաքածու առանց բացատների: Շատ դեպքերում, բացատը լավ է. դուք օգտագործում եք այն տարբեր տեղեկությունների տեսողականորեն առանձնացնելու համար, որպեսզի ավելի հեշտ ընկալվի: Որոշ իրավիճակներում, սակայն, այն կարող է չար դառնալ. լրացուցիչ բացերը կարող են խաթարել ձեր բանաձևերը և ձեր աշխատաթերթերը գրեթե անկառավարելի դարձնել:

    Ինչու՞ օգտագործել սովորական արտահայտություն Excel-ում բացատները կրճատելու համար:

    Նախքան Excel-ի աշխատաթերթերում բացատները հեռացնելու համար սովորական արտահայտություններ օգտագործելու խորամանկությունը, ես կցանկանայի անդրադառնալ այն հարցին, որ առաջին հերթին գալիս է մտքիս. ինչու՞ են մեզ անհրաժեշտ ռեգեքսներ, երբ Excel-ն արդեն ունի TRIM-ը: ֆունկցիա՞:

    Տարբերությունը հասկանալու համար տեսնենք, թե յուրաքանչյուր դեպքում ինչ է համարվում բացատ.

    • Ներկառուցված TRIM ֆունկցիան կարող է հեռացնել միայն space նիշը որն ունի 32 արժեք 7-բիթանոց ASCII համակարգում:
    • Կանոնավոր արտահայտությունները կարող են բացահայտել բացատների մի քանի տարբեր ձևեր, ինչպիսիք են բացատը ( ), ներդիրը (\t), փոխադրման վերադարձը (\r) և նորը: տող (\n). Բացի այդ, կա whitespace նիշ (\s), որը համապատասխանում է այս բոլոր տեսակներին և չափազանց օգտակար է չմշակված մուտքերը մաքրելու համար:տվյալներ:

    Հստակ իմանալով, թե ինչ է տեղի ունենում կուլիսներում, շատ ավելի հեշտ է լուծում գտնել, այնպես չէ՞:

    Ինչպե՞ս միացնել սովորական արտահայտությունները Excel-ում

    Հայտնի փաստ է, որ Excel-ը չի աջակցում կանոնավոր արտահայտություններին: Դրանք միացնելու համար հարկավոր է ստեղծել հատուկ VBA ֆունկցիա: Բարեբախտաբար, մենք արդեն ունենք մեկը, որը կոչվում է RegExpReplace : Սպասեք, ինչո՞ւ «փոխարինել», մինչ մենք խոսում ենք հանելու մասին։ Excel-ի լեզվով «հեռացնել»-ը պարզապես «փոխարինել դատարկ տողով» բառն է :)

    Ֆունկցիան ձեր Excel-ում ավելացնելու համար պարզապես պատճենեք դրա կոդը այս էջից, տեղադրեք այն VBA խմբագրում: , և պահեք ձեր ֆայլը որպես մակրո միացված աշխատանքային գրքույկ (.xlsm):

    Ահա ֆունկցիայի շարահյուսությունը ձեր հղման համար.

    RegExpReplace(տեքստ, նախշ, փոխարինում, [instance_num] , [match_case])

    Առաջին երեք արգումենտները պարտադիր են, վերջին երկուսը պարտադիր չեն:

    Որտեղ՝

    • Text - սկզբնական տողը դեպի որոնել:
    • Նախշը - որոնման ռեգեքսը:
    • Փոխարինում - փոխարինվող տեքստը: հեռացնել սպիտակ բացատները , դուք պետք է սահմանեք այս արգումենտը`
      • դատարկ տող ("") բացարձակապես բոլոր բացատները կտրելու համար
      • space նիշ (" ") մի քանի բացատները մեկ բացատ նիշով փոխարինելու համար
    • Instance_num (ըստ ցանկության) - օրինակի համարը: Շատ դեպքերում, դուք բաց կթողնեք այն բոլոր օրինակները փոխարինելու համար(լռելյայն):
    • Համապատասխանության_պատյան (ըստ ցանկության) - Բուլյան արժեք, որը ցույց է տալիս՝ համընկնել (TRUE) կամ անտեսել (FALSE) տեքստային մեծատառերը: Սպիտակ տարածության համար այն անտեղի է և, հետևաբար, բաց թողնված:

    Լրացուցիչ տեղեկությունների համար տե՛ս RegExpReplace ֆունկցիան:

    Ինչպես հեռացնել բացատը regex-ով - օրինակներ

    Հետ RegExpReplace ֆունկցիան ավելացվեց ձեր աշխատանքային գրքույկին, եկեք անդրադառնանք տարբեր սցենարների մեկ առ մեկ:

    Հեռացրեք բոլոր բացատները regex-ի միջոցով

    Տողի մեջ բոլոր բացատները հեռացնելու համար դուք պարզապես փնտրում եք ցանկացած բացատ նիշ, ներառյալ բացատ, ներդիր, վագոն վերադարձ և տողերի սնուցում, և դրանք փոխարինիր դատարկ տողով (""):

    Pattern . 1>Փոխարինում . ""

    Ենթադրելով, որ աղբյուրի տողը A5 է, ապա B5-ի բանաձևը հետևյալն է.

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

    Ձեր նախշերը կառավարելը հեշտացնելու համար , կարող եք մուտքագրել ռեգեքսը նախապես սահմանված բջիջում և այն մատակարարել բանաձևին՝ օգտագործելով բացարձակ հղում, ինչպիսին է $A$2, այնպես որ բջջային հասցեն կմնա անփոփոխ բանաձևը սյունակում պատճենելիս:

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

    Հեռացնել մեկից ավելի բացատ

    լրացուցիչ բացատ հեռացնելու համար (այսինքն` ավելի քան n մեկ անընդմեջ բացատ), օգտագործեք նույն ռեգեքսը \s+, բայց գտնված համընկնումները փոխարինեք մեկ բացատ նիշով:

    Նախշը : \s+

    Փոխարինում : " "

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

    Խնդրում ենք ուշադրություն դարձնել, որ այս բանաձևը պահպանում է մեկ բացատ նիշ ոչ միայն միջևտվյալների բազայից ներքև, ենթադրենք, որ ցանկանում եք կրճատել բոլոր առաջատար/հետևող բացատները և բոլորը, բացառությամբ մեկի, միջակայքում՝ պահպանելով բազմաթիվ տողեր անփոփոխ: Առաջադրանքը կատարելու համար ձեզ հարկավոր են երկու տարբեր RegExpReplace ֆունկցիաներ:

    Առաջին ֆունկցիան փոխարինում է մի քանի բացատներ մեկ բացատ նիշով:

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

    Մյուսը շերտավորում է բացատները: տողի սկզբից և վերջից.

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

    Պարզապես տեղադրեք երկու ֆունկցիաները մեկը մյուսի մեջ.

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

    Եվ դուք կստանաք կատարյալ արդյունք.

    Regex՝ մի քանի բացատները մեկ նիշով փոխարինելու համար

    Եթե ցանկանում եք հեռացնել բոլոր բացերը տողից և փոխարինել հաջորդական բացատների յուրաքանչյուր խումբ կոնկրետ նիշով, սա այն է, ինչ դուք պետք է անեք.

    Սկզբում օգտագործեք այս ռեգեքսը առաջատար և հետին բացատները կրճատելու համար.

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

    Այնուհետև սպասարկեք վերը նշված գործառույթը մեկ այլ RegExpReplace-ի text արգումենտին, որը մեկ կամ մի քանի հաջորդական բացատները փոխարինում է ձեր նշած գրանշանով, օրինակ. գծիկ:

    Pattern : \s+

    Փոխարինում : -

    Ենթադրենք, որ աղբյուրի տողը գտնվում է A8-ում, բանաձևը ստանում է այս ձևը.

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

    Կամ կարող եք մուտքագրել նախշերը և փոխարինումները առանձին բջիջներում, ինչպես ցույց է տրված սքրինշոթում.

    Regex դատարկ տողերը հեռացնելու համար

    Ահա մի հարց, որը հաճախակի տալիս են օգտվողները, ովքեր ունեն մի քանի տող մեկ բջիջում. «Իմ բջիջներում կան շատ դատարկ տողեր:ազատվել դրանցից, բացի յուրաքանչյուր բջիջով անցնելուց և յուրաքանչյուր տողից ձեռքով ջնջելուց: Պատասխան. Դա հեշտ է:

    Համապատասխանեցնել դատարկ տողերը, որոնք չունեն մեկ նիշ՝ ընթացիկ տողի սկզբից մինչև ^: հաջորդ տող \n, ռեգեքսը հետևյալն է.

    Pattern : ^\n

    Եթե ձեր տեսողական դատարկ տողերը պարունակում են բացատներ կամ ներդիրներ, օգտագործեք այս կանոնավոր արտահայտությունը.

    Pattern : ^[\t ]*\n

    Պարզապես փոխարինեք ռեգեքսը դատարկ տողով այս բանաձևով, և բոլոր դատարկ տողերը միանգամից կվերանան:

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

    Վերոնք բացատների հեռացում RegEx Tools-ով

    Վերոհիշյալ օրինակները ցույց են տվել ռեգեքսների տրամադրած հիանալի հնարավորությունների ընդամենը մի փոքր մասը: Ցավոք, ոչ բոլորը Դասական կանոնավոր արտահայտությունների առանձնահատկությունները հասանելի են VBA-ում:

    Բարեբախտաբար, մեր Ultimate Suite-ում ներառված RegEx գործիքները զերծ են այս սահմանափակումներից, քանի որ դրանք մշակվում են Microsoft-ի .NET RegEx շարժիչով: Սա թույլ է տալիս ստեղծել ավելի բարդ օրինաչափություններ, որոնք չեն աջակցվում VBA RegExp. Belo-ի կողմից w դուք կգտնեք նման կանոնավոր արտահայտության օրինակ:

    Regex՝ թվերի միջև տարածությունը հեռացնելու համար

    Այբբեն թվային տողում, ենթադրենք, ցանկանում եք հեռացնել բացատները միայն թվերի միջև, այնպես որ մի տող, ինչպիսին է. «A 1 2 B»-ը դառնում է «A 12 B»:

    Ցանկացած երկու թվանշանների միջև բացատը համապատասխանեցնելու համար կարող եք օգտագործել հետևյալ տեսքը. : (?<=\d)\s+(?=\d)

    Բանաձևի հիման վրա ստեղծելու համարՎերոհիշյալ ռեգեքսների վրա կատարեք երկու հեշտ քայլ.

    1. Ablebits Data ներդիրում, Text խմբում սեղմեք Regex: Գործիքներ ։

    2. Regex Tools վահանակում ընտրեք աղբյուրի տվյալները, մուտքագրեք ձեր ռեգեքսը, ընտրեք Հեռացնել տարբերակը և սեղմեք Հեռացնել :

      Արդյունքները որպես բանաձևեր ստանալու համար, այլ ոչ թե արժեքներ, հիշեք, որ նշեք Տեղադրեք որպես բանաձև վանդակում:

    3. <24:>

      Մի պահից դուք կտեսնեք AblebitsRegexRemove ֆունկցիան, որը զետեղված է նոր սյունակում՝ սկզբնական տվյալների աջ կողմում:

      Այլընտրանք, դուք կարող եք մուտքագրել ռեգեքսը որոշ բջիջում: , ասենք A5, և բանաձևը տեղադրեք անմիջապես բջիջում՝ օգտագործելով Insert Function երկխոսության վանդակը, որտեղ AblebitsRegexRemove դասակարգված է AblebitsUDFs :

      Քանի որ այս ֆունկցիան հատուկ նախագծված է տողերը հեռացնելու համար, այն պահանջում է ընդամենը երկու արգումենտ՝ մուտքային տող և ռեգեքս.

      =AblebitsRegexRemove(A5, $A$2)

      Այսպես կարելի է հեռացնել բացատները Excel օգտագործելով կանոնավոր արտահայտություններ: Շնորհակալ եմ կարդալու համար և անհամբեր սպասում եմ ձեզ հաջորդ շաբաթ մեր բլոգում տեսնելու համար:

      Հասանելի ներբեռնումներ

      Հեռացրեք բացատը regex-ով - օրինակներ (.xlsm ֆայլ)

      Ultimate Suite - փորձնական տարբերակ (.exe ֆայլ)

      բառերը, բայց նաև տողի սկզբում և վերջում, ինչը լավ չէ: Առաջատար և հետին բացատներից ազատվելու համար վերը նշված բանաձևը տեղադրեք մեկ այլ RegExpReplace ֆունկցիայի մեջ, որը կտրում է բացատները սկզբից և վերջից.

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

      Regex դեպի հեռացնել առաջատար և հետին բացատները

      Տողի սկզբում կամ վերջում բացատ որոնելու համար օգտագործեք սկզբի ^ և վերջի $ խարիսխները:

      Առաջատար բացատ.

      Pattern : ^[\s]+

      Հետք բացատ.

      Pattern : [\s ]+$

      Առաջատար և հետագա բացատ.

      Նախշը : ^[\s]+

    Մայքլ Բրաունը նվիրված տեխնոլոգիայի էնտուզիաստ է, որը ձգտում է պարզեցնել բարդ գործընթացները՝ օգտագործելով ծրագրային գործիքները: Տեխնոլոգիական ոլորտում ավելի քան մեկ տասնամյակ փորձ ունենալով՝ նա կատարելագործել է իր հմտությունները Microsoft Excel-ում և Outlook-ում, ինչպես նաև Google Sheets-ում և Docs-ում: Մայքլի բլոգը նվիրված է իր գիտելիքներն ու փորձառությունը ուրիշների հետ կիսելուն՝ տրամադրելով հեշտ օգտագործվող խորհուրդներ և ձեռնարկներ՝ արտադրողականությունն ու արդյունավետությունը բարձրացնելու համար: Անկախ նրանից, թե դուք փորձառու մասնագետ եք, թե սկսնակ, Մայքլի բլոգը առաջարկում է արժեքավոր պատկերացումներ և գործնական խորհուրդներ՝ առավելագույն օգուտ քաղելու այս կարևոր ծրագրային գործիքներից: