Regex istifadə edərək Excel-də boşluqları və boş sətirləri silin

  • Bunu Paylaş
Michael Brown

Boşluqları ən effektiv şəkildə idarə etmək istəyirsiniz? Hüceyrədəki bütün boşluqları silmək, birdən çox boşluğu bir simvolla əvəz etmək, yalnız nömrələr arasındakı boşluqları kəsmək və s. üçün adi ifadələrdən istifadə edin.

Hansı daxiletmə məlumatından istifadə edirsinizsə, çətin ki, belə bir elementlə qarşılaşacaqsınız. boşluqlar olmadan verilənlər toplusu. Əksər hallarda boşluq yaxşıdır - siz onu qavrayışı asanlaşdırmaq üçün müxtəlif məlumat hissələrini vizual olaraq ayırmaq üçün istifadə edirsiniz. Bəzi hallarda isə bu, pis ola bilər - əlavə boşluqlar düsturlarınızı poza və iş vərəqlərinizi demək olar ki, idarəolunmaz edə bilər.

    Niyə Excel-də boşluqları kəsmək üçün müntəzəm ifadədən istifadə etməlisiniz?

    Excel iş vərəqlərində boşluqları silmək üçün adi ifadələrdən istifadənin incəliklərinə keçməzdən əvvəl mən ilk növbədə ağlıma gələn sualı həll etmək istərdim - Excel-də artıq TRIM-ə sahib olduğu halda niyə bizə regexlərə ehtiyac var? funksiyası varmı?

    Fərqi başa düşmək üçün gəlin hər bir halda nəyin boşluq hesab edildiyinə baxaq:

    • Daxili TRIM funksiyası yalnız boşluq simvolunu silə bilər 7 bitlik ASCII sistemində 32 dəyəri olan.
    • Adi ifadələr boşluq ( ), tab (\t), karyotun qaytarılması (\r) və yeni kimi bir neçə fərqli boşluq formasını müəyyən edə bilər. sətir (\n). Bundan əlavə, bütün bu növlərə uyğun gələn boşluq simvolu (\s) var və xam daxiletməni təmizləmək üçün son dərəcə faydalıdırdata.

    Pərdə arxasında nə baş verdiyini dəqiq bilməklə həll yolu tapmaq çox asandır, elə deyilmi?

    Excel-də müntəzəm ifadələri necə aktivləşdirmək olar

    Məlumdur ki, hazır Excel proqramı müntəzəm ifadələri dəstəkləmir. Onları aktivləşdirmək üçün xüsusi VBA funksiyası yaratmalısınız. Xoşbəxtlikdən, bizdə artıq RegExpReplace adlı biri var. Gözləyin, silmək haqqında danışarkən niyə "dəyişdirmək" lazımdır? Excel dilində "silmək" "boş sətirlə əvəz etmək" üçün başqa bir sözdür :)

    Funksiyanı Excel-ə əlavə etmək üçün onun kodunu bu səhifədən köçürün, VBA redaktoruna yapışdırın. , və faylınızı makro-aktiv iş kitabı (.xlsm) kimi yadda saxlayın.

    İstinad üçün funksiyanın sintaksisi budur:

    RegExpReplace(mətn, nümunə, əvəz, [instance_num] , [match_case])

    İlk üç arqument tələb olunur, sonuncu ikisi isteğe bağlıdır.

    Burada:

    • Mətn - orijinal sətir axtarın.
    • Nümunə - axtarmaq üçün regex.
    • Əvəzetmə - ilə əvəz ediləcək mətn. boşluqları silmək üçün bu arqumenti aşağıdakılardan birinə təyin edərdiniz:
      • boş sətir ("") tamamilə bütün boşluqları kəsmək üçün
      • boşluq xarakteri (" ") çoxlu boşluqları tək boşluq simvolu ilə əvəz etmək üçün
    • Nümunə_num (isteğe bağlı) - nümunə nömrəsi. Əksər hallarda, bütün nümunələri əvəz etmək üçün onu buraxacaqsınız(defolt).
    • Uyğun_case (istəyə bağlı) - mətn reqlamentinin uyğun (DOĞRU) və ya yoxlanılacağını (YANLIŞ) göstərən Boolean dəyəri. Boşluq üçün o, əhəmiyyətsizdir və buna görə də buraxılmışdır.

    Ətraflı məlumat üçün RegExpReplace funksiyasına baxın.

    Regex ilə boşluqları necə silmək olar - nümunələr

    İş kitabınıza RegExpReplace funksiyası əlavə edildi, gəlin müxtəlif ssenariləri bir-bir həll edək.

    Regexdən istifadə edərək bütün boşluqları silin

    Sətrdəki bütün boşluqları silmək üçün sadəcə olaraq istənilən boşluq simvolunu, o cümlədən boşluq simvolunu axtarın. boşluq, tab, karetanın qaytarılması və sətir axını və onları boş sətir ("") ilə əvəz edin.

    Nümunə : \s+

    Əvəzetmə : ""

    Mənbə sətirinin A5-də olduğunu fərz etsək, B5-də düstur belədir:

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

    Nümunələrinizi idarə etməyi asanlaşdırmaq üçün , siz əvvəlcədən təyin edilmiş xanaya regexi daxil edə və onu $A$2 kimi mütləq istinaddan istifadə edərək düsturla təmin edə bilərsiniz, beləliklə, düsturu sütuna köçürərkən xana ünvanı dəyişməz qalacaq.

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

    Birdən çox boşluğu silmək

    əlavə boşluq (yəni, daha çox boşluq) silmək üçün n bir ardıcıl boşluq), eyni regex \s+ istifadə edin, lakin tapılan uyğunluqları tək boşluq simvolu ilə əvəz edin.

    Nümunə : \s+

    Əvəzetmə : " "

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

    Lütfən, diqqət yetirin ki, bu düstur təkcə aralarında deyil, bir boşluq simvolunu da saxlayır.verilənlər toplusunun altında, çoxlu sətirləri toxunulmaz saxlayaraq, bütün aparıcı/arxadakı boşluqları və biri istisna olmaqla, hamısını kəsmək istədiyinizi düşünək. Tapşırığı yerinə yetirmək üçün sizə iki fərqli RegExpReplace funksiyası lazımdır.

    Birinci funksiya çoxlu boşluqları tək boşluq simvolu ilə əvəz edir.

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

    Digəri boşluqları ayırır. sətrin əvvəlindən və sonundan:

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

    Sadəcə iki funksiyanı bir-birinə yerləşdirin:

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

    Və siz alacaqsınız mükəmməl nəticə:

    Birdən çox boşluqları bir simvol ilə əvəz etmək üçün regex

    Sətrdən bütün boşluqları silmək və hər bir ardıcıl boşluq qrupunu əvəz etmək istədiyiniz halda spesifik bir xarakterlə, bunu etməlisiniz:

    Əvvəlcə, bu regexdən aparıcı və arxadakı boşluqları kəsmək üçün istifadə edin:

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

    Sonra yuxarıdakı funksiyanı yerinə yetirin bir və ya daha çox ardıcıl boşluqları təyin etdiyiniz simvolla əvəz edən başqa RegExpReplace-in mətn arqumentinə, məs. defis:

    Nümunə : \s+

    Əvəzetmə : -

    Mənbə sətirinin A8-də olduğunu fərz etsək, düstur bu formanı alır:

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

    Və ya naxışları və dəyişdirmələri ekran görüntüsündə göstərildiyi kimi ayrı-ayrı xanalara daxil edə bilərsiniz:

    Regex boş sətirləri silmək üçün

    Bir xanada bir neçə sətir olan istifadəçilərin tez-tez verdiyi sual budur: "Mənim hücrələrimdə çoxlu boş sətirlər var. Bunu əldə etmək üçün hər hansı bir yol varmı?hər bir xanadan keçmək və hər bir sətri əl ilə silməkdən başqa onlardan xilas ola bilərsiniz?" Cavab: Bu asandır!

    Cari xəttin başlanğıcından ^ başlanğıcına qədər heç bir simvolu olmayan boş sətirləri uyğunlaşdırmaq üçün növbəti sətir \n, regex belədir:

    Nümunə : ^\n

    Əgər vizual olaraq boş sətirlər boşluq və ya nişanlardan ibarətdirsə, bu normal ifadədən istifadə edin:

    Nümunə : ^[\t ]*\n

    Sadəcə bu düsturdan istifadə edərək regexi boş sətirlə əvəz edin və bütün boş sətirlər bir anda yox olacaq!

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

    RegEx Alətləri ilə boşluqların silinməsi

    Yuxarıdakı nümunələr regexlərin təqdim etdiyi gözəl imkanların yalnız kiçik bir hissəsini nümayiş etdirdi. Təəssüf ki, hamısı deyil klassik müntəzəm ifadələrin xüsusiyyətləri VBA-da mövcuddur.

    Xoşbəxtlikdən, Ultimate Suite-ə daxil olan RegEx Alətləri Microsoft-un .NET RegEx mühərriki tərəfindən işləndiyi üçün bu məhdudiyyətlərdən azaddır. Bu, sizə daha mürəkkəb nümunələr yaratmağa imkan verir. VBA RegExp.Belo tərəfindən dəstəklənmir w belə müntəzəm ifadənin nümunəsini tapa bilərsiniz.

    Rəqəmlər arasındakı boşluğu aradan qaldırmaq üçün regex

    Əlifba-rəqəm sətirində yalnız nömrələr arasındakı boşluqları silmək istədiyinizi güman edin. "A 1 2 B" "A 12 B" olur.

    İstənilən iki rəqəm arasındakı boşluğu uyğunlaşdırmaq üçün aşağıdakı baxışlardan istifadə edə bilərsiniz:

    Nümunə : (?<=\d)\s+(?=\d)

    Əsaslı düstur yaratmaq üçünyuxarıdakı regexlərdə yerinə yetirmək üçün iki asan addım var:

    1. Ablebits Data tabında, Mətn qrupunda, Regeks düyməsini basın Alətlər .

    2. Regeks Alətləri panelində mənbə məlumatını seçin, regexinizi daxil edin, Sil seçin seçin və Sil düyməsini basın.

      Nəticələri dəyərlər deyil, düsturlar kimi əldə etmək üçün Düstur kimi daxil et qutusuna işarə qoymağı unutmayın.

    Bir azdan siz AblebitsRegexRemove funksiyasının orijinal məlumatın sağında yeni sütuna daxil edildiyini görəcəksiniz.

    Alternativ olaraq, bəzi xanalara regex daxil edə bilərsiniz. , A5 deyin və AblebitsRegexRemove AblebitsUDFs altında kateqoriyalaşdırıldığı Funksiya Daxil et dialoq qutusundan istifadə edərək düsturu birbaşa xanaya daxil edin.

    Bu funksiya xüsusi olaraq sətirləri silmək üçün nəzərdə tutulduğundan, o, yalnız iki arqument tələb edir - giriş sətri və regex:

    =AblebitsRegexRemove(A5, $A$2)

    Boşluqları belə silmək olar. Normal ifadələrdən istifadə edərək Excel. Oxuduğunuz üçün sizə təşəkkür edirəm və sizi gələn həftə bloqumuzda görməyi səbirsizliklə gözləyirəm!

    Mövcud endirmələr

    Regex ilə boşluqları silin - nümunələr (.xlsm faylı)

    Ultimate Suite - sınaq versiyası (.exe faylı)

    sözlər, həm də sətirin əvvəlində və sonunda, bu yaxşı deyil. Baş və arxa boşluqlardan xilas olmaq üçün yuxarıdakı düsturu əvvəldən və sondan boşluqları ayıran başqa bir RegExpReplace funksiyasına yerləşdirin:

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

    Regeks qabaqcıl və arxadakı boşluğu silin

    Sətrin əvvəlində və ya sonunda boşluq axtarmaq üçün başlanğıc ^ və son $ işarələrindən istifadə edin.

    Aparıcı boşluq:

    Nümunə : ^[\s]+

    Arxadakı boşluq:

    Nümunə : [\s ]+$

    Aparıcı arxadakı boşluq:

    Nümunə : ^[\s]+

    Michael Brown proqram alətlərindən istifadə edərək mürəkkəb prosesləri sadələşdirməyə həvəsi olan xüsusi texnologiya həvəskarıdır. Texnologiya sənayesində on ildən artıq təcrübəyə malik olmaqla, o, Microsoft Excel və Outlook, həmçinin Google Cədvəl və Sənədlərdə bacarıqlarını mükəmməlləşdirib. Mayklın bloqu öz biliyini və təcrübəsini başqaları ilə bölüşməyə, məhsuldarlığı və səmərəliliyi artırmaq üçün asan izlənilən məsləhətlər və dərslikləri təqdim etməyə həsr olunub. İstər təcrübəli peşəkar, istərsə də yeni başlayan biri olmağınızdan asılı olmayaraq, Mayklın bloqu bu vacib proqram alətlərindən maksimum yararlanmaq üçün dəyərli fikirlər və praktiki məsləhətlər təklif edir.