Talaan ng nilalaman
Ipinapakita ng tutorial kung paano gawin ang validation ng data sa Excel gamit ang mga regular na expression sa tulong ng isang custom na RegexMatch function.
Pagdating sa paghihigpit sa input ng user sa Excel worksheets, Data Validation ay kailangang-kailangan. Gustong payagan lamang ang mga numero o petsa sa isang naibigay na cell? O limitahan ang mga halaga ng teksto sa isang tiyak na haba? O baka hindi payagan ang mga oras sa labas ng isang partikular na hanay? Walang problema, lahat ng ito ay madaling magawa gamit ang preset o custom na pamantayan sa pagpapatunay. Ngunit paano kung gusto kong payagan lamang ang mga wastong email address o string na tumutugma sa isang partikular na pattern? Naku, hindi pwede. Regex sabi mo? Hmm... maaaring gumana iyan!
Paano gawin ang Excel Data Validation sa Regex
Sa kasamaang palad, wala sa mga built-in na feature ng Excel ang sumusuporta sa mga regexe, at ang Data Validation ay hindi pagbubukod. Upang ma-validate ang cell input gamit ang mga regular na expression, kailangan mo munang gumawa ng custom na Regex function. Ang isa pang komplikasyon ay ang mga function na tinukoy ng gumagamit ng VBA ay hindi direktang maihahatid sa Pagpapatunay ng Data - kakailanganin mo ng isang tagapamagitan sa anyo ng isang pinangalanang formula.
Isinasaalang-alang ang nasa itaas, hayaan nating ibalangkas nang maikli ang mga hakbang na isasagawa para i-validate ang data sa Excel gamit ang mga regexe:
- Gumawa ng custom na Regex function na tumitingin kung tumutugma ang isang input value sa isang regular na expression.
- Tumukoy ng pangalan para sa iyong Regex formula.
- Mag-configure ng panuntunan sa Pag-validate ng Data batay sa pinangalanang formula.
- Kopyahin angmga setting ng pagpapatunay sa maraming mga cell hangga't gusto mo.
Mukhang isang plano? Subukan nating ipatupad ito sa pagsasanay!
Pagpapatunay ng data ng Excel gamit ang mga custom na regular na expression
Ang halimbawang ito ay tumutugon sa isang napakakaraniwang kaso - kung paano payagan ang mga halaga lamang ng isang partikular na pattern.
Ipagpalagay na magtataglay ka ng ilang SKU code sa iyong worksheet at gusto mong tiyakin na ang mga code na tumutugma sa isang partikular na pattern ang mapupunta sa listahan. Sa kondisyon na ang bawat SKU ay binubuo ng 2 pangkat ng mga character na pinaghihiwalay ng gitling, ang unang pangkat ay may kasamang 3 malalaking titik at ang pangalawang pangkat - 3 digit, maaari mong tukuyin ang mga naturang halaga gamit ang regex sa ibaba.
Pattern : ^[A-Z]{3}-\d{3}$
Pakipansin na ang simula (^) at pagtatapos ($) ng string ay naka-angkla, kaya walang mga character maliban sa maaaring ilagay ang pattern sa isang cell.
1. Magdagdag ng custom na Regex Match function
Magsimula sa pagpasok ng RegExpMatch function sa iyong workbook. Ang code ay naisulat na ng aming mga Excel guru, kaya kailangan mo lang itong kopyahin mula sa naka-link na pahina sa itaas at i-paste sa iyong VBA editor.
Narito ang syntax ng function para sa iyong sanggunian:
RegExpMatch(text , pattern, [match_case])Saan:
- Text (kinakailangan) - isang source string (sa aming konteksto - isang validated na cell).
- Pattern (kinakailangan) - isang regular na expression upang tumugma.
- Match_case (opsyonal) - uri ng pagtutugma. TAMA o tinanggal - kaso-sensitibo; FALSE - case-insensitive.
Tip. Kung ikaw ay gumagamit ng aming Ultimate Suite, maaari mong gawin ang Regex Data Validation sa Excel nang hindi nagdaragdag ng anumang VBA code sa iyong mga workbook. Gamitin lang ang custom na AblebitsRegexMatch function na kasama sa aming Regex Tools.
2. Lumikha ng pinangalanang formula
Sa iyong target na worksheet, piliin ang cell A1 (anuman ang mga nilalaman nito at kahit anong cell ang aktwal mong i-validate), pindutin ang Ctrl + F3 upang buksan ang Name Manager, at tukuyin ang isang pangalan para sa formula na ito:
=RegExpMatch(Sheet1!A1, "^[A-Z]{3}-\d{3}$")
O maaari mong ilagay ang regex sa ilang cell (A2 sa halimbawang ito) at magbigay ng $A$2 sa pangalawang argumento:
=RegExpMatch(Sheet1!A1, Sheet1!$A$2)
Para gumana nang tama ang formula, tiyaking gumamit ng kamag-anak na sanggunian para sa argumentong text (A1) at ganap na sanggunian para sa pattern ($A$2).
Dahil ang aming formula ay nilayon para sa pagpapatunay ng mga numero ng SKU, pinangalanan namin ito nang naaayon: Validate_SKU .
Mahalagang tala! Kapag tinutukoy ang formula, mangyaring suriing muli kung ang unang argumento ay tumutukoy sa kasalukuyang napiling cell , kung hindi ay hindi gagana ang formula. Halimbawa, kung ang cell A1 ay pinili sa sheet, ilagay ang A1 sa unang argumento (ayon sa aming mga rekomendasyon); kung napili ang B2, pagkatapos ay gamitin ang B2 para sa unang argumento, at isa pa. Hindi mahalaga kung aling partikular na sanggunian ang iyong ginagamit hangga't tumutugma ito sa kasalukuyang napiling cell.
Para sa hakbang-hakbangmga tagubilin, pakitingnan ang Paano gumawa ng pinangalanang formula sa Excel.
3. I-set up ang Data Validation
Piliin ang unang cell na susuriin (A5 sa aming kaso) at gumawa ng custom na data validation rule batay sa pinangalanang formula. Para dito, gawin ang sumusunod:
- I-click ang Data tab > Data Validation .
- Sa Allow drop-down na listahan, piliin ang Custom .
- Ilagay ang formula sa ibaba sa kaukulang kahon.
=Validate_SKU
- Alisin sa pagkakapili ang opsyon na Balewalain ang blangko , kung hindi, hindi gagana ang iyong panuntunan.
Opsyonal, maaari kang mag-type isang pasadyang mensahe ng error na ipapakita kapag ang di-wastong data ay ipinasok sa isang cell.
Kung sa tingin mo ay kailangan mo ang mga detalyadong hakbang, narito ka: Paano mag-set up ng custom na Data Validation sa Excel.
4. Kopyahin ang Data Validation sa higit pang mga cell
Upang kopyahin ang mga setting ng validation sa higit pang mga cell, ito ang kailangan mong gawin:
- Piliin ang cell na may data validation at pindutin ang Ctrl + C upang kopyahin ito.
- Pumili ng iba pang mga cell na gusto mong i-validate, i-right click ang mga ito, i-click ang I-paste ang Espesyal , at piliin ang opsyon na Validation .
- I-click ang OK .
Makikita ang higit pang impormasyon sa How to copy Data Validation.
Ngayon, sa tuwing may susubok na magpasok ng di-wastong SKU sa alinman sa mga na-validate na cell, ang sumusunod lalabas ang mensahe ng babala:
Pagpapatunay ng email gamit ang Regex
Upang magsagawa ng pagpapatunay ng email, simulan mosa pagsulat ng isang regular na expression na tumutugma sa isang email address.
Pattern : ^[\w\.\-]+@[A-Za-z0-9]+[A-Za -z0-9\.\-]*[A-Za-z0-9]+\.[A-Za-z]{2,24}$
Para sa detalyadong paliwanag ng syntax, mangyaring tingnan ang Regex upang tumugma sa mga wastong email address.
At ngayon, tukuyin ang pamantayan sa pagpapatunay sa pamamagitan ng pagsasagawa ng mga pamilyar nang hakbang:
- Ilagay ang regex sa itaas sa B2.
- Piliin ang cell A1 at tumukoy ng pangalang tinatawag na Validate_Email na tumutukoy sa:
=RegExpMatch(Sheet1!A1, Sheet1!$B$2)
- Para sa cell B5, ilapat ang custom na Data Validation gamit ang formula sa ibaba. Mahalaga na ang opsyon na Balewalain ang blangko ay dapat na maalis sa pagkakapili.
=Validate_Email
Bukod pa rito, maaari mong i-configure ang isang custom na mensahe ng error na nag-uudyok sa user na magpasok ng wastong email address.
- Kopyahin ang panuntunan sa mga cell sa ibaba.
Kung ang isang email address na inilagay mo sa isang napatunayang cell ay hindi tumutugma sa isang regex pattern, ang sumusunod na alerto ay pop up:
Pagpapatunay ng mga password gamit ang mga regular na expression
Kapag gumagamit ng regex para sa pagpapatunay ng password, ang unang bagay na magpapasya ay kung ano mismo ang dapat suriin ng iyong regular na expression. Narito ang ilang halimbawa na maaaring magtakda sa iyo sa tamang track.
Ang password ay dapat na hindi bababa sa 6 na character ang haba at maaari lamang maglaman ng mga titik (malaki o maliit) at mga digit:
Pattern : ^[A-Za-z0-9]{6,}$
Ang password ay dapat na hindi bababa sa 6 na character ang haba at may kasamang kahit isang titik atisang digit:
Pattern : ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6 ,}$
Ang isang password ay dapat na min 6 na character ang haba at may kasamang hindi bababa sa isang malaking titik, isang maliit na titik at isang digit:
Pattern : ^(?= .*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z\d]{6,}$
Ang password ay dapat na min 6 na character mahaba at may kasamang kahit isang titik, isang digit at isang espesyal na karakter:
Pattern : ^(?=.*[A-Za-z])(?=.*\d )(?=.*[@$!%*#?&_-])[A-Za-z\d@$!%*#?&_-]{6,}$
Sa naitatag na pattern, maaari kang magpatuloy sa pagse-set up ng Data Validation:
- Ilagay ang regex ng iyong password sa C2.
- Piliin ang cell A1 at lumikha ng pinangalanang formula na tinatawag na Validate_Password :
=RegExpMatch(Sheet1!A1, Sheet1!$C$2)
- Para sa cell C5, gumawa ng custom na panuntunan sa pagpapatunay gamit ang formula sa ibaba. Tandaang alisin sa pagkakapili ang check box na Balewalain ang blangko .
=Validate_Password
- Kopyahin ang panuntunan sa pinakamaraming cell hangga't gusto mo.
Ngayon, maaari kang ligtas na magdagdag ng mga bagong password sa listahan. Kung ang isang input string ay hindi tumutugma sa regex, ang sumusunod na alerto ay magpapaalala sa iyo kung anong mga uri ng mga halaga ang tinatanggap:
Regex Data Validation ay hindi gumagana
Kung ang Regex Data Validation ay hindi gumagana sa iyong Excel , malamang na ito ay dahil sa isa sa mga sumusunod na dahilan.
Nawawala ang RegExpMatch function
Bago ilapat ang Data Validation, siguraduhing ipasok ang code ng RegExpMatch function sa iyong workbook.
Maling regularexpression
Upang matiyak na gumagana ang iyong regex gaya ng inaasahan, maaari kang maglagay ng formula ng RegExpMatch sa ilang cell at suriin ang mga resulta. Para sa higit pang impormasyon, pakitingnan ang Excel Regular expression na tumutugma sa mga halimbawa.
Upang suriin at i-debug ang iyong mga regular na expression, maaari kang gumamit ng mga libreng online na serbisyo sa pagsubok ng regex gaya ng RegEx101 o RegExr.
Maling pinangalanang formula
Ang isang napaka-karaniwang dahilan ng pagkabigo sa pagpapatunay ng data ay isang Regex na pinangalanang formula na tumutukoy sa isang maling cell. Sa lahat ng halimbawa, inirerekomenda naming tumukoy ng formula na tumutukoy sa A1:
=RegExpMatch(A1, regex)
Gumagana lang ito kung aktibo ang cell A1 kapag tumutukoy ng pangalan at <15 Ginagamit ang>relative reference (nang walang $ sign).
Ang ideya ay awtomatikong magbabago ang isang relative reference na tinukoy sa formula (A1) batay sa relatibong posisyon ng validated na cell. Sa madaling salita, ang cell A1 ay pinili para lamang sa kaginhawahan at pagkakapare-pareho. Sa katunayan, maaari mong piliin ang cell B1 at sumangguni sa B1, piliin ang cell C1 at sumangguni sa C1, at iba pa. Ang pangunahing bagay ay ang na-reference na cell ay dapat ang aktibong cell .
Upang tingnan kung tama ang iyong pinangalanang formula, pumili ng anumang cell sa iyong worksheet, buksan ang Name Manager, at tingnan kung aling cell ang itinuturo ng formula. Kung ito ay tumutukoy sa kasalukuyang napiling cell, tama ang formula. Kung hindi, dapat mong baguhin ang reference sa unang argumento.
Sa screenshotsa ibaba, ang cell A7 ay pinili, ibig sabihin ang isang pinangalanang formula ay dapat na may A7 sa unang argumento. Ang pangalawang argumento ($A$2) ay tumutukoy sa regex - ang reference na ito ay dapat na manatiling pare-pareho, kaya ito ay naka-lock ng $ sign.
Balewalain ang napiling blangkong opsyon
Kapag nagse-set up ng custom na panuntunan sa Pag-validate ng Data, mahalagang alisin sa pagkakapili ang check box na Balewalain ang blangko . Kung hindi, hindi gagana ang panuntunan dahil sa sumusunod na dahilan:
Kung hindi mahanap ang isang tugma, ang RegExpMatch function ay magbabalik ng FALSE. Kapag napili ang opsyong Balewalain ang blangko , ang FALSE ay katumbas ng blangko at hindi pinapansin.
Ang isang alternatibong solusyon ay tahasang nagsasaad na ang formula ay dapat magbalik ng TRUE:
=RegExpMatch(…)=TRUE
Ganyan gawin ang Data Validation sa Excel gamit ang mga regular na expression. Salamat sa pagbabasa at umaasa akong makita ka sa aming blog sa susunod na linggo!
Magsanay ng workbook para sa pag-download
Mga halimbawa ng Regex Data Validation (.xlsm file)