Regex-dan foydalanib Excelda bo'sh joylar va bo'sh qatorlarni olib tashlang

  • Buni Baham Ko'Ring
Michael Brown

Bo'shliqlarni eng samarali tarzda boshqarishni xohlaysizmi? Hujayradagi barcha boʻshliqlarni olib tashlash, bir nechta boʻshliqlarni bitta belgi bilan almashtirish, faqat raqamlar orasidagi boʻshliqlarni qisqartirish va hokazolar uchun oddiy iboralardan foydalaning.

Qaysi maʼlumotlardan foydalanayotgan boʻlsangiz ham, siz hech qanday maʼlumotga duch kelmaysiz. ma'lumotlar to'plami bo'sh joysiz. Aksariyat hollarda bo'sh joy yaxshi bo'ladi - siz uni idrok etishni osonlashtirish uchun turli xil ma'lumotlarni vizual ravishda ajratish uchun foydalanasiz. Biroq, ba'zi hollarda, bu yomon bo'lishi mumkin - qo'shimcha bo'shliqlar formulalaringizni chalkashtirib yuborishi va ish varaqlarini deyarli boshqarib bo'lmaydigan qilib qo'yishi mumkin.

    Nega Excelda bo'shliqlarni kesish uchun muntazam ifodadan foydalanish kerak?

    Biz Excel ish varaqlaridagi bo'shliqlarni olib tashlash uchun oddiy iboralardan foydalanishning nozik jihatlariga sho'ng'ishdan oldin, men birinchi navbatda xayolga keladigan savolga murojaat qilmoqchiman - Excelda TRIM allaqachon mavjud bo'lsa, nima uchun regexlar kerak? funktsiya?

    Farqni tushunish uchun har bir holatda bo'sh joy nima deb hisoblanishini ko'rib chiqamiz:

    • O'rnatilgan TRIM funksiyasi faqat bo'shliq belgisini o'chirishi mumkin. 7-bitli ASCII tizimida 32 qiymatiga ega.
    • Oddiy iboralar boʻshliqning bir necha xil shakllarini aniqlashi mumkin, masalan, boʻsh joy ( ), yorliq (\t), vagonni qaytarish (\r) va yangi qator (\n). Bundan tashqari, ushbu turlarning barchasiga mos keladigan bo'sh joy belgisi (\s) mavjud bo'lib, u xom ashyoni tozalash uchun juda foydali bo'ladi.ma'lumotlar.

    Sahna ortida nima sodir bo'lishini aniq bilsangiz, yechim ishlab chiqish ancha oson, to'g'rimi?

    Excel'da oddiy iboralarni qanday yoqish mumkin

    Ma'lumki, tayyor Excel dasturi oddiy iboralarni qo'llab-quvvatlamaydi. Ularni yoqish uchun siz maxsus VBA funksiyasini yaratishingiz kerak. Yaxshiyamki, bizda allaqachon RegExpReplace deb nomlangan bittasi bor. Kutib turing, biz olib tashlash haqida gapirganda, nima uchun "almashtirish" kerak? Excel tilida "o'chirish" "bo'sh satr bilan almashtirish" uchun boshqa so'zdir :)

    Funktsiyani Excelga qo'shish uchun uning kodini ushbu sahifadan nusxalash va VBA muharririga joylashtirish kifoya. , va faylingizni makros-yoqilgan ish kitobi (.xlsm) sifatida saqlang.

    Mana bu funksiya sintaksisi maʼlumot uchun:

    RegExpReplace(matn, naqsh, almashtirish, [instance_num] , [match_case])

    Birinchi uchta argument talab qilinadi, oxirgi ikkitasi ixtiyoriy.

    Bu yerda:

    • Matn - asl qator qidiruv.
    • Pattern - izlash uchun regex.
    • Almashtirish - almashtiriladigan matn. o'chirish bo'sh joylarni uchun siz ushbu argumentni quyidagilarga o'rnatasiz:
      • bo'sh string ("") mutlaqo barcha bo'shliqlarni kesish uchun
      • bo'sh joy belgi (" ") bir nechta bo'sh joyni bitta bo'sh joy belgisi bilan almashtirish uchun
    • Masalan_num (ixtiyoriy) - misol raqami. Aksariyat hollarda siz barcha misollarni almashtirish uchun uni o'tkazib yuborasiz(standart).
    • Match_case (ixtiyoriy) - matn registriga mos kelishini (TRUE) yoki e'tibor bermaslikni (FALSE) ko'rsatadigan mantiqiy qiymat. Bo'shliq uchun u ahamiyatsiz va shuning uchun o'tkazib yuborilgan.

    Qo'shimcha ma'lumot olish uchun RegExpReplace funksiyasiga qarang.

    Bo'sh joyni regex yordamida qanday olib tashlash mumkin - misollar

    Ish kitobingizga RegExpReplace funksiyasi qo‘shildi, keling, bir vaqtning o‘zida turli stsenariylarni hal qilaylik.

    Regex yordamida barcha bo‘shliqlarni olib tashlang

    Stringdagi barcha bo‘shliqlarni o‘chirish uchun siz shunchaki istalgan bo‘shliq belgisini, jumladan, bo‘sh joyni qidirasiz. bo'sh joy, yorliq, karetaning qaytishi va satr tasmasi va ularni bo'sh satr ("") bilan almashtiring.

    Naqsh : \s+

    Almashtirish : ""

    Manba qatori A5 formatida deb faraz qilsak, B5 formulasi quyidagicha:

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

    Naqshlarni boshqarishni osonlashtirish uchun , siz regexni oldindan belgilangan katakchaga kiritishingiz va uni $A$2 kabi mutlaq havola yordamida formulaga kiritishingiz mumkin, shuning uchun formulani ustundan pastga nusxalashda katak manzili oʻzgarishsiz qoladi.

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

    Bir nechta bo'shliqni olib tashlang

    qo'shimcha bo'shliqni (ya'ni, ko'proq bo'shliqni) olib tashlash uchun n bitta ketma-ket bo'sh joy), bir xil regex \s+ dan foydalaning, lekin topilgan mosliklarni bitta bo'sh joy belgisi bilan almashtiring.

    Naqsh : \s+

    Almashtirish : " "

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

    Iltimos, e'tibor bering, bu formulada faqat bitta bo'shliq belgisi mavjud emas.maʼlumotlar toʻplamidan pastda, siz bir nechta satrlarni buzilmagan holda, barcha yetakchi/soʻnggi boʻshliqlarni va bitta boʻshliqdan tashqari hammasini qisqartirishni xohlaysiz. Vazifani bajarish uchun sizga ikkita turli RegExpReplace funksiyasi kerak bo'ladi.

    Birinchi funksiya bir nechta bo'shliqni bitta bo'sh joy belgisi bilan almashtiradi.

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

    Ikkinchi funksiya bo'shliqlarni ajratadi. satr boshidan va oxiridan:

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

    Ikki funktsiyani bir-biriga joylashtiring:

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

    Va siz quyidagini olasiz mukammal natija:

    Bir nechta bo'shliqlarni bitta belgi bilan almashtirish uchun regex

    Agar siz satrdagi barcha bo'shliqlarni olib tashlamoqchi bo'lsangiz va ketma-ket bo'shliqlarning har bir guruhini almashtirmoqchi bo'lsangiz ma'lum bir belgi bilan, buni qilishingiz kerak:

    Birinchi navbatda, bosh va keyingi bo'shliqlarni kesish uchun ushbu regexdan foydalaning:

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

    Keyin, yuqoridagi funktsiyani bajaring. bir yoki bir nechta ketma-ket bo'shliqlarni siz belgilagan belgi bilan almashtiradigan boshqa RegExpReplace ning matn argumentiga, masalan. defis:

    Naqsh : \s+

    Almashtirish : -

    Manba qatori A8 da bo'lsa, formula bu shaklni oladi:

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

    Yoki skrinshotda ko'rsatilgandek alohida katakchalarga naqsh va almashtirishlarni kiritishingiz mumkin:

    Regex bo'sh satrlarni olib tashlash

    Bu erda bitta katakda bir nechta satr bo'lgan foydalanuvchilar tez-tez so'raydigan savol: "Mening katakchalarimda juda ko'p bo'sh chiziqlar bor. Uni olishning biron bir usuli bormi?har bir katakchadan o‘tish va har bir satrni qo‘lda o‘chirishdan boshqa narsadan xalos bo‘lish mumkinmi?" keyingi qator \n, regex quyidagicha:

    Naqsh : ^\n

    Agar vizual ravishda boʻsh satrlarda boʻshliqlar yoki yorliqlar boʻlsa, ushbu oddiy iboradan foydalaning:

    Naqsh : ^[\t ]*\n

    Shunchaki ushbu formuladan foydalanib regexni boʻsh satr bilan almashtiring, shunda barcha boʻsh satrlar birdaniga oʻchib ketadi!

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

    RegEx Tools yordamida bo'shliqlarni olib tashlash

    Yuqoridagi misollar regexlar tomonidan taqdim etilgan ajoyib imkoniyatlarning faqat kichik qismini ko'rsatdi. Afsuski, hammasi ham emas. Klassik muntazam iboralar xususiyatlari VBA da mavjud.

    Yaxshiyamki, bizning Ultimate Suite tarkibiga kiritilgan RegEx Tools bu cheklovlardan xoli, chunki ular Microsoft .NET RegEx dvigateli tomonidan qayta ishlanadi. Bu sizga yanada murakkab naqshlarni yaratish imkonini beradi. VBA RegExp.Belo tomonidan qo'llab-quvvatlanmaydi w shunday muntazam ifodaga misol topasiz.

    Raqamlar orasidagi bo'shliqni olib tashlash uchun regex

    Alifbo-raqamli qatorda siz faqat raqamlar orasidagi bo'shliqlarni olib tashlamoqchisiz, deylik. "A 1 2 B" "A 12 B" ga aylanadi.

    Istalgan ikkita raqam orasidagi bo'shliqni moslashtirish uchun siz quyidagi ko'rinishlardan foydalanishingiz mumkin:

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

    Asosiy formula yaratish uchunYuqoridagi regexlarda bu yerda bajarish uchun ikkita oson qadam bor:

    1. Ablebits Data yorlig'ida, Matn guruhida Regeks-ni bosing. Asboblar .

    2. Regex Tools panelida manba ma'lumotlarini tanlang, regexingizni kiriting, O'chirish -ni tanlang. variantini tanlang va O'chirish -ni bosing.

      Natijalarni qiymatlar emas, formulalar sifatida olish uchun Formla sifatida kiritish katagiga belgi qo'yishni unutmang.

    Birozdan so'ng siz AblebitsRegexRemove funksiyasini asl ma'lumotlarning o'ng tomonidagi yangi ustunga kiritilganini ko'rasiz.

    Shuningdek, ba'zi katakchalarga regexni kiritishingiz mumkin. , A5 deb ayting va Funktsiyani qo'shish dialog oynasidan foydalanib formulani to'g'ridan-to'g'ri hujayraga kiriting, bu erda AblebitsRegexRemove AblebitsUDFs ostida tasniflanadi.

    Bu funksiya satrlarni olib tashlash uchun maxsus ishlab chiqilganligi sababli, u faqat ikkita argumentni talab qiladi - kirish satri va regex:

    =AblebitsRegexRemove(A5, $A$2)

    Mana shunday bo'shliqlarni olib tashlash mumkin Muntazam iboralar yordamida Excel. O'qiganingiz uchun tashakkur va sizni keyingi haftada blogimizda ko'rishni orziqib kutaman!

    Mavjud yuklab olishlar

    Regex bilan bo'sh joyni olib tashlang - misollar (.xlsm fayli)

    Ultimate Suite - sinov versiyasi (.exe fayli)

    so'zlar balki satrning boshida va oxirida ham yaxshi emas. Bosh va keyingi bo'shliqlardan xalos bo'lish uchun yuqoridagi formulani bo'shliqlarni boshidan va oxiridan ajratib turadigan boshqa RegExpReplace funksiyasiga joylashtiring:

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

    Regex - oldingi va keyingi bo'shliqlarni olib tashlang

    Qator boshida yoki oxirida bo'shliqni qidirish uchun boshlang'ich ^ va oxiri $ langarlaridan foydalaning.

    Etakchi bo'sh joy:

    Naqsh : ^[\s]+

    Keyingi boʻshliq:

    Naqsh : [\s ]+$

    Etakchi va oxirgi boʻshliq:

    Naqsh : ^[\s]+

    Maykl Braun - dasturiy vositalardan foydalangan holda murakkab jarayonlarni soddalashtirishga ishtiyoqi bo'lgan maxsus texnologiya ishqibozi. Texnologiya sohasida o'n yildan ortiq tajribaga ega bo'lgan holda, u Microsoft Excel va Outlook, shuningdek, Google Sheets va Docs dasturlarida o'z mahoratini oshirdi. Mayklning blogi o'z bilimi va tajribasini boshqalar bilan baham ko'rishga, samaradorlik va samaradorlikni oshirish uchun amal qilish oson maslahatlar va o'quv qo'llanmalariga bag'ishlangan. Tajribali mutaxassismisiz yoki yangi boshlovchi boʻlasizmi, Mayklning blogi ushbu muhim dasturiy vositalardan maksimal darajada foydalanish uchun qimmatli tushunchalar va amaliy maslahatlarni taqdim etadi.