Tabl cynnwys
Mae'r tiwtorial yn dangos sut i ddilysu data yn Excel gan ddefnyddio mynegiadau rheolaidd gyda chymorth swyddogaeth RegexMatch wedi'i theilwra.
Pan ddaw'n fater o gyfyngu ar fewnbwn defnyddwyr ar daflenni gwaith Excel, Data Validation yn anhepgor. Eisiau caniatáu rhifau neu ddyddiadau mewn cell benodol yn unig? Neu gyfyngu gwerthoedd testun i hyd penodol? Neu efallai na chaniateir amseroedd y tu allan i ystod benodol? Dim problem, gellir gwneud hyn i gyd yn hawdd gyda meini prawf dilysu rhagosodedig neu arferiad. Ond beth os ydw i am ganiatáu dim ond cyfeiriadau e-bost dilys neu linynnau sy'n cyd-fynd â phatrwm penodol? Ysywaeth, nid yw hynny'n bosibl. Regex ti'n dweud? Hmm… gallai hynny weithio!
Sut i wneud Excel Data Validation gyda Regex
Yn anffodus, nid yw'r un o'r nodweddion Excel adeiledig yn cefnogi regexes, ac nid yw Dilysu Data yn eithriad. Er mwyn gallu dilysu mewnbwn cell gan ddefnyddio ymadroddion rheolaidd, mae angen i chi greu swyddogaeth Regex wedi'i deilwra yn gyntaf. Cymhlethdod arall yw na ellir cyflwyno swyddogaethau VBA a ddiffinnir gan ddefnyddwyr i Ddilysu Data yn uniongyrchol - bydd angen cyfryngwr arnoch ar ffurf fformiwla a enwir.
Gan ystyried yr uchod, gadewch inni amlinellu'n fyr y camau i'w cymryd i ddilysu data yn Excel gan ddefnyddio regexes:
- Creu ffwythiant Regex wedi'i deilwra sy'n gwirio a yw gwerth mewnbwn yn cyfateb i fynegiad arferol.
- Diffiniwch enw ar gyfer eich fformiwla Regex.
- Ffurfweddu rheol Dilysu Data yn seiliedig ar y fformiwla a enwir.
- Copi'rgosodiadau dilysu i gynifer o gelloedd ag y dymunwch.
Swnio fel cynllun? Gadewch i ni geisio ei roi ar waith yn ymarferol!
Dilysiad data Excel gan ddefnyddio mynegiadau arferol arferol
Mae'r enghraifft hon yn mynd i'r afael ag achos cyffredin iawn - sut i ganiatáu gwerthoedd patrwm penodol yn unig.
Gan dybio eich bod yn cadw rhai codau SKU yn eich taflen waith ac eisiau bod yn siŵr mai dim ond y codau sy'n cyfateb i batrwm penodol sy'n mynd i mewn i'r rhestr. Ar yr amod bod pob SKU yn cynnwys 2 grŵp o nodau wedi'u gwahanu â chysylltnod, y grŵp cyntaf yn cynnwys 3 prif lythyren a'r ail grŵp - 3 digid, gallwch adnabod gwerthoedd o'r fath gan ddefnyddio'r regex isod.
Patrwm : ^[A-Z]{3}-\d{3}$
Sylwch fod dechrau (^) a diwedd ($) y llinyn wedi'u hangori, felly dim nodau heblaw yn y gellid rhoi patrwm mewn cell.
1. Ychwanegu swyddogaeth Regex Match arferiad
Dechrau gyda mewnosod y swyddogaeth RegExpMatch yn eich llyfr gwaith. Mae'r cod eisoes wedi'i ysgrifennu gan ein gurus Excel, felly does ond angen i chi ei gopïo o'r dudalen uchod a'i gludo yn eich golygydd VBA.
Dyma gystrawen y swyddogaeth ar gyfer eich cyfeirnod:
RegExpMatch(text , patrwm, [match_case])Lle:
- Testun (gofynnol) - llinyn ffynhonnell (yn ein cyd-destun ni - cell wedi'i dilysu). <9 Patrwm (angenrheidiol) - mynegiad rheolaidd i gyd-fynd.
- Match_case (dewisol) - math cyfatebol. CYWIR neu wedi'i hepgor - achos-sensitif; ANGHYWIR - cas-ansensitif.
Awgrym. Os ydych chi'n ddefnyddiwr o'n Ultimate Suite, yna gallwch chi wneud Dilysiad Data Regex yn Excel heb ychwanegu unrhyw god VBA at eich llyfrau gwaith. Defnyddiwch swyddogaeth AblebitsRegexMatch wedi'i theilwra wedi'i chynnwys gyda'n Offer Regex.
2. Creu fformiwla a enwir
Yn eich taflen waith targed, dewiswch gell A1 (waeth beth yw ei gynnwys ac ni waeth pa gell rydych chi'n mynd i'w dilysu), pwyswch Ctrl + F3 i agor y Rheolwr Enw, a diffinio enw ar gyfer y fformiwla hon:
=RegExpMatch(Sheet1!A1, "^[A-Z]{3}-\d{3}$")
Neu gallwch nodi'r regex mewn rhyw gell (A2 yn yr enghraifft hon) a chyflenwi $A$2 i'r ail arg:
=RegExpMatch(Sheet1!A1, Sheet1!$A$2)
Er mwyn i'r fformiwla weithio'n gywir, gwnewch yn siŵr eich bod yn defnyddio cyfeirnod cymharol ar gyfer y ddadl testun (A1) a chyfeirnod absoliwt ar gyfer patrwm ($A$2).
O ystyried bod ein fformiwla wedi'i bwriadu ar gyfer dilysu rhifau SKU, rydym yn ei enwi yn unol â hynny: Validate_SKU .
Nodyn pwysig! Wrth ddiffinio'r fformiwla, gwiriwch ddwywaith bod y arg gyntaf yn cyfeirio at y gell a ddewiswyd ar hyn o bryd , fel arall ni fydd y fformiwla'n gweithio. Er enghraifft, os dewisir cell A1 ar y ddalen, rhowch A1 yn y ddadl gyntaf (yn unol â'n hargymhellion); os dewisir B2, yna defnyddiwch B2 ar gyfer y ddadl gyntaf, ac felly un. Nid oes ots pa gyfeirnod arbennig a ddefnyddiwch cyn belled ei fod yn cyfateb i'r gell a ddewiswyd ar hyn o bryd.
Ar gyfer cam wrth gamcyfarwyddiadau, gweler Sut i wneud fformiwla a enwir yn Excel.
3. Sefydlu Dilysu Data
Dewiswch y gell gyntaf i'w gwirio (A5 yn ein hachos ni) a gwnewch reol dilysu data wedi'i haddasu yn seiliedig ar y fformiwla a enwir. Ar gyfer hyn, gwnewch y canlynol:
- Cliciwch Data tab > Dilysiad Data .
- Yn y Caniatáu gwymplen, dewiswch Custom .
- Rhowch y fformiwla isod yn y blwch cyfatebol.
=Validate_SKU
- Dad-ddewis yr opsiwn Anwybyddu'n wag , fel arall ni fydd eich rheol yn gweithio.
Yn ddewisol, gallwch deipio neges gwall arferol i'w harddangos pan fydd data annilys yn cael ei roi mewn cell.
Os ydych chi'n teimlo bod angen y camau manwl arnoch chi, dyma chi: Sut i sefydlu Dilysiad Data wedi'i deilwra yn Excel.
4. Copïo Dilysiad Data i fwy o gelloedd
I gopïo'r gosodiadau dilysu i fwy o gelloedd, dyma beth sydd angen i chi ei wneud:
- Dewiswch y gell gyda dilysiad data a gwasgwch Ctrl + C i copïwch ef.
- Dewiswch gelloedd eraill yr ydych am eu dilysu, de-gliciwch arnynt, cliciwch Gludwch Arbennig , a dewiswch yr opsiwn Dilysu .
- Cliciwch Iawn .
Gellir dod o hyd i ragor o wybodaeth yn Sut i gopïo Dilysu Data.
Nawr, bob tro y bydd rhywun yn ceisio mynd i mewn i SKU annilys yn unrhyw un o'r celloedd dilys, y canlynol bydd neges rhybudd yn ymddangos:
Dilysiad e-bost gyda Regex
I gyflawni dilysiad e-bost, rydych chi'n dechraugydag ysgrifennu mynegiad rheolaidd sy'n cyfateb i gyfeiriad e-bost.
Patrwm : ^[\w\.\-]+@[A-Za-z0-9]+[A-Za -z0-9\.\-]*[A-Za-z0-9]+\.[A-Za-z]{2,24}$
Am esboniad manwl o'r gystrawen, os gwelwch yn dda gweler Regex i gyd-fynd â chyfeiriadau e-bost dilys.
A nawr, nodwch y meini prawf dilysu trwy gyflawni'r camau sydd eisoes yn gyfarwydd:
- Rhowch y regex uchod yn B2.
- Dewiswch gell A1 a diffiniwch enw o'r enw Validate_Email sy'n cyfeirio at:
=RegExpMatch(Sheet1!A1, Sheet1!$B$2)
- Ar gyfer cell B5, cymhwyswch Ddilysiad Data wedi'i deilwra gan ddefnyddio'r fformiwla isod. Mae'n hanfodol bod yr opsiwn Anwybyddu'n wag yn cael ei ddad-ddewis.
=Validate_Email
Yn ogystal, gallwch ffurfweddu neges gwall wedi'i haddasu yn annog y defnyddiwr i nodi cyfeiriad e-bost dilys.
- Copïwch y rheol i'r celloedd isod.
Os nad yw cyfeiriad e-bost a roddwch mewn cell wedi'i ddilysu yn cyfateb i batrwm regex, bydd y rhybudd canlynol pop up:
Dilysu cyfrineiriau gan ddefnyddio mynegiadau rheolaidd
Wrth ddefnyddio regex ar gyfer dilysu cyfrinair, y peth cyntaf i'w benderfynu yw'r union beth y dylai eich mynegiant arferol ei wirio. Dyma rai enghreifftiau a allai eich gosod ar y trywydd iawn.
Rhaid i gyfrinair fod o leiaf 6 nod o hyd a gall gynnwys llythrennau (mawr neu fach) a digidau yn unig:
Patrwm : ^[A-Za-z0-9]{6,}$
Rhaid i gyfrinair fod o leiaf 6 nod o hyd a chynnwys o leiaf un llythyren aun digid:
Patrwm : ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6 ,}$
Rhaid i gyfrinair fod o leiaf 6 nod o hyd a chynnwys o leiaf un prif lythyren, un llythyren fach ac un digid:
Patrwm : ^(?= .*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z\d]{6,}$
Rhaid i gyfrinair fod o leiaf 6 nod hir ac yn cynnwys o leiaf un llythyren, un digid ac un nod arbennig:
Patrwm : ^(?=.*[A-Za-z])(?=.*\d )(?=.*[@$!%*#?&_-])[A-Za-z\d@$!%*#?&_-]{6,}$
Gyda'r patrwm wedi'i sefydlu, gallwch symud ymlaen i sefydlu Dilysu Data:
- Rhowch eich cyfrinair regex yn C2.
- Dewiswch gell A1 a chreu fformiwla a enwir o'r enw Validate_Password :
=RegExpMatch(Sheet1!A1, Sheet1!$C$2)
- Ar gyfer cell C5, crëwch reol ddilysu wedi'i haddasu gyda'r fformiwla isod. Cofiwch ddad-ddewis y blwch ticio Anwybyddu'n wag .
=Validate_Password
- Copïwch y rheol i gynifer o gelloedd ag y dymunwch.
Nawr, gallwch ychwanegu cyfrineiriau newydd at y rhestr yn ddiogel. Os nad yw llinyn mewnbwn yn cyfateb i'r regex, bydd y rhybudd canlynol yn eich atgoffa pa fathau o werthoedd sy'n cael eu derbyn:
Dilysu Data Regex ddim yn gweithio
Os nad yw Regex Data Validation yn gweithio yn eich Excel , yn fwyaf tebygol mae oherwydd un o'r rhesymau canlynol.
Fwythiant RegExpMatch ar goll
Cyn cymhwyso Dilysu Data, sicrhewch eich bod yn mewnosod cod y swyddogaeth RegExpMatch yn eich llyfr gwaith.
12> Rheolaidd anghywirmynegiadI wneud yn siŵr bod eich regex yn gweithio yn ôl y disgwyl, gallwch roi fformiwla RegExpMatch mewn rhyw gell ac archwilio'r canlyniadau. Am ragor o wybodaeth, gweler Excel Paru mynegiadau rheolaidd ag enghreifftiau.
I ddadansoddi a dadfygio eich mynegiadau rheolaidd, gallwch ddefnyddio gwasanaethau profi regex ar-lein rhad ac am ddim fel RegEx101 neu RegExr.
Fformiwla a enwir yn anghywir
Rheswm cyffredin iawn dros fethiant dilysu data yw fformiwla a enwir gan Regex sy'n cyfeirio at gell anghywir. Yn yr holl enghreifftiau, fe wnaethom argymell diffinio fformiwla sy'n cyfeirio at A1:
=RegExpMatch(A1, regex)
Dim ond os yw cell A1 yn weithredol y bydd hyn yn gweithio wrth ddiffinio enw a cyfeirnod perthynol (heb yr arwydd $) yn cael ei ddefnyddio.
Y syniad yw y bydd cyfeiriad cymharol a nodir yn y fformiwla (A1) yn newid yn awtomatig yn seiliedig ar safle cymharol y gell ddilyswyd. Mewn geiriau eraill, dewisir cell A1 er hwylustod a chysondeb yn unig. Mewn gwirionedd, gallwch ddewis cell B1 a chyfeirio at B1, dewis cell C1 a chyfeirio at C1, ac ati. Y peth allweddol yw y dylai'r gell y cyfeirir ati fod yn gell weithredol .
I wirio a yw'r fformiwla a enwyd yn gywir, dewiswch unrhyw gell yn eich taflen waith, agorwch y Enw Rheolwr, a gweld i ba gell mae'r fformiwla yn pwyntio. Os yw'n cyfeirio at y gell a ddewiswyd ar hyn o bryd, mae'r fformiwla yn gywir. Fel arall, dylech newid y cyfeiriad yn y ddadl gyntaf.
Yn y sgrinlunisod, dewisir cell A7, sy'n golygu y dylai fformiwla a enwir gael A7 yn y ddadl gyntaf. Mae'r ail ddadl ($A$2) yn cyfeirio at y regex - mae'r cyfeiriad hwn i fod i aros yn gyson, felly mae wedi'i gloi gyda'r arwydd $.
Anwybyddu'r opsiwn gwag a ddewiswyd
Wrth sefydlu rheol Dilysu Data wedi'i haddasu, mae'n bwysig dad-ddewis y blwch ticio Anwybyddu'n wag . Fel arall, ni fydd y rheol yn gweithio oherwydd y rheswm canlynol:
Os na cheir hyd i gyfatebiaeth, mae'r ffwythiant RegExpMatch yn dychwelyd ANGHYWIR. Gyda'r opsiwn Anwybyddu'n wag wedi'i ddewis, mae FALSE yn cyfateb i wag ac yn cael ei anwybyddu.
Mae datrysiad amgen yn nodi'n benodol y dylai'r fformiwla ddychwelyd GWIR:
=RegExpMatch(…)=TRUE
Dyna sut i wneud Dilysu Data yn Excel gan ddefnyddio ymadroddion rheolaidd. Diolch i chi am ddarllen ac edrychaf ymlaen at eich gweld ar ein blog wythnos nesaf!
Gweithlyfr ymarfer i'w lawrlwytho
Enghreifftiau Dilysu Data Regex (ffeil .xlsm)
<3