Mundarija
Nima uchun Excel formulalarida oddiy iboralar qo'llab-quvvatlanmasligini hech qachon tushunolmaysizmi? Endi ular :) Bizning maxsus funksiyalarimiz yordamida siz ma'lum bir naqshga mos keladigan satrlarni osongina topishingiz, almashtirishingiz, chiqarib olishingiz va olib tashlashingiz mumkin.
Bir qarashda, Excelda matn qatori uchun kerak bo'ladigan hamma narsa mavjud. manipulyatsiyalar. Hmm… muntazam iboralar haqida nima deyish mumkin? Afsuski, Excelda o'rnatilgan Regex funksiyalari mavjud emas. Lekin hech kim bizni o'zimizni yarata olmaymiz demaydi :)
Nima muntazam ifoda?
Regnal ifoda (aka regex yoki <8)>regexp ) - qidiruv sxemasini belgilaydigan maxsus kodlangan belgilar ketma-ketligi. Ushbu naqshdan foydalanib, siz satrda mos keladigan belgilar kombinatsiyasini topishingiz yoki ma'lumotlar kiritilishini tasdiqlashingiz mumkin. Agar siz joker belgilar bilan tanish bo'lsangiz, regexlarni joker belgilarning kengaytirilgan versiyasi deb tasavvur qilishingiz mumkin.
Oddiy iboralar maxsus belgilar, operatorlar va konstruksiyalardan iborat o'z sintaksisiga ega. Masalan, [0-5] 0 dan 5 gacha boʻlgan har qanday bitta raqamga mos keladi.
Oddiy ifodalar JavaScript va VBA kabi koʻplab dasturlash tillarida qoʻllaniladi. Ikkinchisida maxsus RegExp ob'ekti mavjud bo'lib, biz undan shaxsiy funksiyalarimizni yaratishda foydalanamiz.
Excel regexni qo'llab-quvvatlaydimi?
Afsuski, Excelda o'rnatilgan Regex funksiyalari mavjud emas. Formulalarda muntazam iboralardan foydalanish uchun siz o'zingizning foydalanuvchi belgilagan funksiyangizni (VBA) yaratishingiz kerak bo'ladi.argumentlar:
=IF(RegExpMatch(A5, $A$2), "Yes", "No")
Ko'proq formulalar misollari uchun qarang:
- Qanday qilib muntazam iboralar yordamida satrlarni moslashtirish kerak
- Regexlar bilan Excel ma'lumotlarini tekshirish
Excel Regex Extract funktsiyasi
RegExpExtract funksiyasi muntazam ifodaga mos keladigan pastki qatorlarni qidiradi va barcha mosliklarni chiqaradi yoki maxsus moslik.
RegExpExtract(matn, naqsh, [namuna_num], [match_case])Bu yerda:
- Matn (majburiy) - qidirish uchun matn qatori in.
- Naqsh (majburiy) - mos keladigan oddiy ibora.
- Instance_num (ixtiyoriy) - qaysi namunani ko'rsatuvchi seriya raqami ekstrakti. Agar o'tkazib yuborilsa, barcha topilgan mosliklarni qaytaradi (standart).
- Match_case (ixtiyoriy) - mos kelishini (TRUE yoki o'tkazib yuborilgan) yoki e'tibor bermaslikni (FALSE) belgilaydi.
Funksiya kodini shu yerda olishingiz mumkin.
Masalan: oddiy iboralar yordamida satrlarni qanday chiqarish mumkin
Misolimizni biroz uzoqroqqa olsak, hisob-faktura raqamlarini chiqaramiz. Buning uchun biz har qanday 7 xonali raqamga mos keladigan juda oddiy regexdan foydalanamiz:
Pattern : \b\d{7}\b
Put A2 formatidagi naqsh va siz ushbu ixcham va oqlangan formula yordamida ishni bajarasiz:
=RegExpExtract(A5, $A$2)
Agar naqsh mos kelsa, formuladan hisob-faktura raqami chiqariladi, agar moslik topilmasa - hech narsa qaytarilmaydi.
Qo'shimcha misollar uchun qarang: Excelda satrlarni qanday chiqarish mumkinregexdan foydalanish.
Excel Regex Replace funksiyasi
RegExpReplace funktsiyasi regexga mos keladigan qiymatlarni siz ko'rsatgan matn bilan almashtiradi.
RegExpReplace(matn, naqsh, almashtirish , [instance_num], [match_case])Bu yerda:
- Matn (majburiy) - qidirish uchun matn qatori.
- Pattern (majburiy) - mos keladigan oddiy ibora.
- Almashtirish (majburiy) - mos keladigan pastki satrlar bilan almashtiriladigan matn.
- Instance_num (ixtiyoriy) - almashtiriladigan misol. Standart “barcha mosliklar”.
- Match_case (ixtiyoriy) - matn registriga mos kelishini (TRUE yoki o‘tkazib yuborilgan) yoki e’tibor bermaslikni (FALSE) boshqaradi.
Funksiya kodi bu yerda mavjud.
Masalan: regexlar yordamida satrlarni qanday almashtirish yoki olib tashlash
Ba'zi yozuvlarimizda kredit karta raqamlari mavjud. Ushbu ma'lumotlar maxfiydir va siz uni biror narsa bilan almashtirishni yoki butunlay o'chirishni xohlashingiz mumkin. Har ikkala vazifani ham RegExpReplace funksiyasi yordamida bajarish mumkin. Qanday? Ikkinchi stsenariyda biz bo'sh satr bilan almashtiramiz.
Bizning namunaviy jadvalimizda barcha karta raqamlari 16 ta raqamdan iborat bo'lib, ular bo'sh joy bilan ajratilgan 4 guruhda yozilgan. Ularni topish uchun biz ushbu oddiy ifoda yordamida naqshni takrorlaymiz:
Pattern : \b\d{4} \d{4} \d{4} \d{4}\ b
Almashtirish uchun quyidagi satr ishlatiladi:
Almashtirish : XXXX XXXX XXXXXXXX
Va bu erda kredit karta raqamlarini sezgir bo'lmagan ma'lumotlar bilan almashtirishning to'liq formulasi:
=RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "XXXX XXXX XXXX XXXX")
Alohida hujayralardagi regex va almashtirish matni bilan ( A2 va B2), formula teng darajada yaxshi ishlaydi:
Excelda "olib tashlash" "almashtirish" ning alohida holatidir. Kredit karta raqamlarini o'chirish uchun almashtirish argumenti uchun bo'sh qatordan ("") foydalaning:
=RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "")
Maslahat. Natijalarda bo'sh satrlarni o'rnatish uchun ushbu misolda ko'rsatilganidek, boshqa RegExpReplace funksiyasidan foydalanishingiz mumkin: Regex yordamida bo'sh satrlarni qanday olib tashlash mumkin.
Qo'shimcha ma'lumot uchun qarang:
- Excelda regex yordamida satrlarni qanday almashtirish mumkin
- regex yordamida satrlarni qanday olib tashlash mumkin
- Regexlar yordamida boʻshliqni qanday olib tashlash mumkin
Regeks moslashtirish, chiqarish vositalari , pastki satrlarni almashtiring va olib tashlang
Ultimate Suite foydalanuvchilari ish kitoblariga bitta qator kod kiritmasdan ham oddiy iboralarning barcha imkoniyatlarini olishlari mumkin. Barcha kerakli kodlar bizning ishlab chiquvchilarimiz tomonidan yozilgan va o'rnatish vaqtida Excelga silliq tarzda integratsiyalangan.
Yuqorida muhokama qilingan VBA funksiyalaridan farqli o'laroq, Ultimate Suite funksiyalari .NET-ga asoslangan bo'lib, ikkita asosiy afzallik beradi:
- Oddiy .xlsx ishchi kitoblarida oddiy iboralardan hech qanday VBA kodini qo'shmasdan va ularni makrofayllar sifatida saqlamasdan foydalanishingiz mumkin.
- .NET Regex mexanizmi to'liq xususiyatli klassikani qo'llab-quvvatlaydi.muntazam iboralar, bu sizga yanada murakkab naqshlar yaratish imkonini beradi.
Excel'da Regex-dan qanday foydalanish
Ultimate Suite o'rnatilgan bo'lsa, Excelda muntazam ifodalardan foydalanish bu ikki qadam kabi oddiy. :
- Ablebits Data yorligʻida Matn guruhida Regex Tools -ni bosing.
- Regex Tools panelida quyidagilarni bajaring:
- Manba maʼlumotlarini tanlang.
- Regex naqshingizni kiriting.
- Istagan variantni tanlang: Match , Extract , O'chirish yoki O'zgartirish .
- Natijani quyidagicha olish uchun formula emas, balki qiymat uchun Formula sifatida kiritish katagiga belgi qo'ying.
- Harakat tugmasini bosing.
Masalan, kredit karta raqamlarini hujayralardan olib tashlash uchun A2:A6, biz ushbu sozlamalarni sozlaymiz:
Bir martalik AblebitsRegex funktsiyasi asl nusxangizning o'ng tomonidagi yangi ustunga kiritiladi. ma'lumotlar. Bizning holatda formula:
=AblebitsRegexRemove(A2, "\b\d{4} \d{4} \d{4} \d{4}\b")
Formula mavjud bo'lgandan so'ng uni istalgan mahalliy formula kabi tahrirlashingiz, nusxalashingiz yoki ko'chirishingiz mumkin.
Regeks formulasini to'g'ridan-to'g'ri hujayraga qanday kiritish kerak
AblebitsRegex funktsiyalari plagin interfeysidan foydalanmasdan ham to'g'ridan-to'g'ri hujayra ichiga kiritilishi mumkin. Mana shunday:
- Formulalar panelidagi fx tugmasini yoki Formulalar yorlig'ida Funktsiyani qo'shish tugmasini bosing.
- Funktsiyani kiritish dialog oynasida AblebitsUDFs ni tanlang.kategoriyasini tanlang, qiziqtirgan funksiyani tanlang va OK tugmasini bosing.
- Odatdagi kabi funksiya argumentlarini aniqlang va OK tugmasini bosing. Bajarildi!
Qo'shimcha ma'lumot olish uchun Excel uchun Regex Tools-ga qarang.
Mana shunday oddiy iboralarni Excel kataklaridagi matnni moslashtirish, ajratib olish, almashtirish va olib tashlash uchun ishlatish mumkin. O'qiganingiz uchun rahmat va sizni keyingi haftada blogimizda ko'rishni orziqib kutaman!
Mavjud yuklab olishlar
Excel Regex - formula misollari (.xlsm fayli)
Ultimate Suite - sinov versiyasi (.exe fayli)
yoki .NET asosida) yoki regexlarni qo'llab-quvvatlovchi uchinchi tomon vositalarini o'rnating.Excel Regex cheat varaqlari
Regex naqsh juda oddiy yoki o'ta murakkab bo'ladimi, u umumiy sintaksis yordamida qurilgan. Ushbu qo'llanma sizga oddiy iboralarni o'rgatish maqsadini ko'rmaydi. Buning uchun yangi boshlanuvchilar uchun bepul oʻquv qoʻllanmalaridan tortib ilgʻor foydalanuvchilar uchun premium kurslargacha boʻlgan koʻplab resurslar mavjud.
Quyida biz asosiy maʼlumotlarni tushunishingizga yordam beradigan asosiy RegEx naqshlariga qisqacha havola beramiz. Shuningdek, u boshqa misollarni o‘rganayotganda hiyla-nayrang varaqasi bo‘lib xizmat qilishi mumkin.
Agar siz oddiy iboralar bilan tanish bo‘lsangiz, to‘g‘ridan-to‘g‘ri RegExp funksiyalariga o‘tishingiz mumkin.
Belgilar
Bular muayyan belgilarga mos keladigan eng tez-tez ishlatiladigan naqshlar.
Naqsh | Ta'rif | Misol | Moslik |
. | Jirkat belgisi: qator uzilishidan tashqari har qanday bitta belgiga mos keladi | .ot | nuqta , issiq , pot , @ot |
\d | Raqamli belgi: har qanday bitta raqam 0 dan 9 gacha | \d | a1b da 1 |
\D Raqam bo'lmagan har qanday belgi | \D | a1b da a va b<2 ga mos keladi> | |
\s | Boʻsh joy belgisi: boʻsh joy, tab, yangi satr va karetani qaytarish | .\s. | In 3 tsent , mos keladi 3 c |
\S | Har qandaybo'sh joy bo'lmagan belgi | \S+ | 30 tsent da 30 va tsent |
\w | Soʻz belgisi: har qanday ASCII harfi, raqam yoki pastki chiziq | \w+ | 5_cats*** ichida, mos keladi 5_cats |
\W | Alfanumerik belgi yoki pastki chiziq boʻlmagan har qanday belgi | \W+ | 5_cats*** da, *** |
\t | tab | <14 mos keladi>||
\n | Yangi qator | \n\d+ | Ikki qatorda quyidagi qator, 10 5 mushuk 10 itga mos keladi |
\ | Belgining maxsus ma'nosidan qochadi, shuning uchun siz uni qidiring | \. \w+\. | To'g'ridan-to'g'ri ""ni topishingiz uchun nuqta qo'yadi. satrdagi belgi Janob , Xonim , Prof. |
Belgilar sinflari
Ushbu naqshlardan foydalanib, siz turli belgilar to'plamining elementlarini moslashtirishingiz mumkin.
Naqsh | Tavsif | Misol | Mos keladi |
[belgilar] | Qavs ichidagi istalgan bitta belgiga mos keladi | d[oi]g | dog va dig |
[^belgilar] | Qavs ichidagi EMAS har qanday bitta belgiga mos keladi | d[^oi]g | dag, dug , d1g ga mos kelmaydi dog va dig |
[dan–to] | Oradagi diapazondagi har qanday belgiga mos keladi.qavslar | [0-9] [a-z] [A-Z] | 0 dan 9 gacha bo'lgan har qanday bitta raqam Har qanday bitta kichik harf Har qanday bitta bosh harf |
Kvantorlar
Kvantorlar mos keladigan belgilar sonini belgilaydigan maxsus ifodalardir. Miqdor ko'rsatkichi har doim o'zidan oldingi belgi uchun amal qiladi.
Naqsh | Ta'rif | Misol | Mosliklar | ||||||||||||
* | Nol yoki undan ortiq takrorlanishlar | 1a* | 1, 1a , 1aa, 1aaa va boshqalar. | ||||||||||||
+ | Bir yoki bir nechta takrorlanish | po+ | pot da , mos keladi po paor da, mos keladi poo | ||||||||||||
? | Nol yoki bitta hodisa | roa?d | yo'l, rod | ||||||||||||
*? | Nol yoki koʻproq holatlar, lekin iloji boricha kamroq | 1a*? | 1a , 1aa va 1aaa da mos keladi 1a | ||||||||||||
+? | Bir yoki bir nechta, lekin iloji boricha kamroq | po+? | pot va yomon da po | ||||||||||||
mos keladi? | Nol yoki bitta holat , lekin iloji boricha kamroq | roa?? | road va rod da ro | ||||||||||||
{n} | Oldingi naqshga n marta mos keladi | \d{3} | Aniq 3 ta raqam | ||||||||||||
{n ,} | Oldingi naqshga n yoki undan ortiq marta mos keladi | \d{3,} | 3 yoki undan ortiq raqam | ||||||||||||
{n,m} | Mos keladin va m marta orasidagi oldingi naqsh | \d{3,5} | 3 dan 5 tagacha raqam |
Guruhlash
Guruhlash konstruksiyalari manba qatoridan pastki qatorni olish uchun ishlatiladi, shuning uchun siz u bilan ba'zi amallarni bajarishingiz mumkin.
Sintaksis | Tavsif | Misol | Mos keladi |
(naqsh) | Qo'lga olish guruhi: mos keladigan pastki qatorni oladi va unga tartib raqamini beradi | (\d+) | 5 ta mushuk va 10 ta it da 5 (1-guruh) va 10 (2-guruh) |
(?:pattern) | Qoʻlga kiritilmaydigan guruh: guruhga mos keladi, lekin uni ushlamaydi | (\d+)(?: itlar) | 5 mushuk va 10 itda , ushlaydi 10 |
\1 | Guruh tarkibi 1 | (\d+)\+(\d+)=\2\+\1 | 5+10=10+5 ga mos keladi va 5 ni oladi va 10 , ular qo'lga olish guruhlarida |
\2 | 2-guruh tarkibi |
Anchorlar
Anchorlar kirish satrida qayerdan izlash kerakligini belgilaydi o'yin.
Ankor | Ta'rif | Misol | Guruhlar |
^ | Qatorning boshlanishi Izoh: [^ichki qavslar] “yo‘q” degan ma’noni bildiradi | ^\d+ | Istalgan sondagi raqamlar satrning boshlanishi. 5 mushuk va 10 it da 5 |
$ | <14 mos keladi>Qator oxiri\d+$ | Satr oxiridagi istalgan son raqamlar. 10 ichidaY | |
(?<=) | Positive lookbehind | (?<=Y)X | X ifodasiga mos keladi undan oldin Y bo'lganda (ya'ni, agar X orqasida Y bo'lsa) |
(? | Salbiy qarash | (? <) 14>X iborasidan oldin Y BOʻLMAGAN hollarda mos keladi |
Endi siz asosiy narsalarni bilasiz, keling, eng qiziqarli qismga oʻtamiz – foydalanish satrlarni tahlil qilish va kerakli maʼlumotlarni topish uchun haqiqiy maʼlumotlarda regexlar. Agar sintaksis haqida batafsil maʼlumot kerak boʻlsa, Microsoft-ning Oddiy ifoda tili boʻyicha qoʻllanmasi foydali boʻlishi mumkin.
Excel uchun maxsus RegEx funksiyalari
Yuqorida aytib o'tilganidek, Microsoft Excel-da o'rnatilgan RegEx funksiyalari yo'q. Muntazam ifodalarni yoqish uchun biz uchta maxsus VBA funksiyasini (aka foydalanuvchi tomonidan belgilangan funksiyalar) yaratdik. Kodlarni quyida havola qilingan sahifalardan yoki namunamizdan nusxalashingiz mumkin. ish kitobiga o'ting va keyin o'zingizning Excel fayllaringizga joylashtiring.
VBA RegExp funksiyalari qanday ishlaydi
Ushbu bo'lim ichki mexanikani tushuntiradi va int bo'lishi mumkin. backendda nima sodir bo'lishini aniq bilmoqchi bo'lganlar uchun eresting.
VBA-da oddiy iboralardan foydalanishni boshlash uchun siz RegEx ob'ektiga murojaat kutubxonasini faollashtirishingiz yoki CreateObject funksiyasidan foydalanishingiz kerak. VBA muharririda havolani o'rnatish muammosidan xalos bo'lish uchun biz oxirgi yondashuvni tanladik.
RegExp obyekti 4 ta xususiyatga ega:
- Pattern - bo'ladi naqsh kiritish satriga mos keladi.
- Global - kirish qatoridagi barcha mosliklarni yoki faqat birinchisini topishni nazorat qiladi. Bizning funksiyalarimizda barcha mosliklarni olish uchun u True ga o‘rnatiladi.
- MultiLine - ko‘p qatorli satrlardagi satr uzilishlari bo‘ylab naqsh mos kelishini yoki faqat mos kelishini aniqlaydi. birinchi qatorda. Bizning kodlarimizda har bir satrda qidirish uchun u True ga o'rnatiladi.
- IgnoreCase - oddiy ifoda katta-kichik harfga sezgir (standart) yoki katta-kichik ekanligini belgilaydi- sezgir emas (True ga o'rnatiladi). Bizning holatda, bu ixtiyoriy match_case parametrini qanday sozlashingizga bog'liq. Odatiy bo'lib, barcha funksiyalar katta-kichik harflarga sezgir .
VBA RegExp cheklovlari
Excel VBA asosiy regex naqshlarini amalga oshiradi, lekin unda ko'plab ilg'or funksiyalar mavjud emas. .NET, Perl, Java va boshqa regex dvigatellarida mavjud. Misol uchun, VBA RegExp (?i) katta-kichik harflarni sezmaydigan moslik uchun yoki (?m) ko‘p qatorli rejim uchun, orqaga qarab, POSIX sinflari kabi qatorli o‘zgartirishlarni qo‘llab-quvvatlamaydi.
Excel Regex. Moslash funksiyasi
RegExpMatch funksiyasi kirish satrida muntazam ifodaga mos keladigan matnni qidiradi va agar moslik topilsa TRUE, aks holda FALSE qaytaradi.
RegExpMatch(matn, naqsh, [ match_case])Bu yerda:
- Matn (majburiy) - qidirish uchun bir yoki bir nechta satr.
- Naqsh ( talab qilinadi) - muntazammos keladigan ifoda.
- Match_case (ixtiyoriy) - moslik turi. TRUE yoki o'tkazib yuborilgan - katta-kichik harflarga sezgir; FALSE - katta-kichik harflarni sezmaydi
Funksiya kodi bu yerda.
Masalan: satrlarni moslashtirish uchun oddiy iboralarni qanday ishlatish kerak
Quyidagi ma'lumotlar to'plamida siz xohlaysiz deylik. SKU kodlarini o'z ichiga olgan yozuvlarni aniqlash uchun.
Har bir SKU 2 ta bosh harfdan keyin chiziqcha va 4 ta raqamdan boshlanishini hisobga olsak, ularni quyidagi ifoda yordamida moslashtirishingiz mumkin.
Naqsh : \b[A-Z]{2}-\d{4}\b
Bu yerda [A-Z]{2} A dan Z gacha va \d{4 gacha boʻlgan har qanday 2 ta bosh harfni bildiradi. } 0 dan 9 gacha boʻlgan har qanday 4 ta raqamni bildiradi. Soʻz chegarasi \b SKU kattaroq qatorning bir qismi emas, alohida soʻz ekanligini bildiradi.
Naqsh oʻrnatilgandan soʻng, odatdagidek formulani yozishni boshlang. , va funksiya nomi Excelning Avtomatik toʻldirish dasturi tomonidan tavsiya etilgan roʻyxatda paydo boʻladi:
Asl satr A5 formatida boʻlsa, formula quyidagicha boʻladi:
=RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")
Qulaylik uchun siz oddiy iborani alohida katakka kiritishingiz va naqsh argumenti uchun mutlaq havoladan ($A$2) foydalanishingiz mumkin. t. Bu formulani boshqa kataklarga nusxalashda katak manzili oʻzgarmasligini taʼminlaydi:
=RegExpMatch(A5, $A$2)
TRUE va FALSE oʻrniga oʻz matn yorliqlaringizni koʻrsatish uchun RegExpMatch ni IF funksiyasiga joylashtiring va agar_haqiqat_qiymat va agar_noto'g'ri qiymat da kerakli matnlarni belgilangplyus 5 15 ni beradi, 15 ga mos keladi
Alternatsiya (OR) konstruksiyasi
Alternativ operand OR mantiqini faollashtiradi, shuning uchun siz u yoki bu elementga mos kelishingiz mumkin.
Tuzilish | Ta'rif | Misol | Mosliklar |