Բովանդակություն
Ցանկանու՞մ եք ամենաարդյունավետ կերպով կարգավորել բացատները: Օգտագործեք կանոնավոր արտահայտություններ՝ հեռացնելու բոլոր բացատները բջիջում, փոխարինեք մի քանի բացատները մեկ նիշով, կրճատեք բացատները միայն թվերի միջև և ավելին: տվյալների հավաքածու առանց բացատների: Շատ դեպքերում, բացատը լավ է. դուք օգտագործում եք այն տարբեր տեղեկությունների տեսողականորեն առանձնացնելու համար, որպեսզի ավելի հեշտ ընկալվի: Որոշ իրավիճակներում, սակայն, այն կարող է չար դառնալ. լրացուցիչ բացերը կարող են խաթարել ձեր բանաձևերը և ձեր աշխատաթերթերը գրեթե անկառավարելի դարձնել:
Ինչու՞ օգտագործել սովորական արտահայտություն 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)
Բանաձևի հիման վրա ստեղծելու համարՎերոհիշյալ ռեգեքսների վրա կատարեք երկու հեշտ քայլ.
- Ablebits Data ներդիրում, Text խմբում սեղմեք Regex: Գործիքներ ։
- Regex Tools վահանակում ընտրեք աղբյուրի տվյալները, մուտքագրեք ձեր ռեգեքսը, ընտրեք Հեռացնել տարբերակը և սեղմեք Հեռացնել :
Արդյունքները որպես բանաձևեր ստանալու համար, այլ ոչ թե արժեքներ, հիշեք, որ նշեք Տեղադրեք որպես բանաձև վանդակում:
<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]+