Innholdsfortegnelse
Opplæringen viser hvordan du gjør datavalidering i Excel ved hjelp av regulære uttrykk ved hjelp av en tilpasset RegexMatch-funksjon.
Når det gjelder å begrense brukerinndata i Excel-regneark, Datavalidering er uunnværlig. Vil du bare tillate tall eller datoer i en gitt celle? Eller begrense tekstverdier til en bestemt lengde? Eller kanskje ikke tillate tider utenfor et gitt område? Ikke noe problem, alt dette kan enkelt gjøres med forhåndsinnstilte eller tilpassede valideringskriterier. Men hva om jeg vil tillate bare gyldige e-postadresser eller strenger som samsvarer med et spesifikt mønster? Akk, det er ikke mulig. Regex sier du? Hmm... det kan kanskje fungere!
Hvordan gjøre Excel-datavalidering med Regex
Dessverre støtter ingen av de innebygde Excel-funksjonene regexes, og datavalidering er ingen unntak. For å kunne validere celleinndata ved hjelp av regulære uttrykk, må du først lage en egendefinert Regex-funksjon. En annen komplikasjon er at VBA-brukerdefinerte funksjoner ikke kan betjenes direkte til datavalidering - du trenger en formidler i form av en navngitt formel.
Med tanke på ovenstående, la oss kort skissere trinnene som skal tas for å validere data i Excel ved å bruke regex:
- Opprett en tilpasset regex-funksjon som sjekker om en inngangsverdi samsvarer med et regulært uttrykk.
- Definer et navn for regex-formelen.
- Konfigurer en datavalideringsregel basert på den navngitte formelen.
- Kopiervalideringsinnstillinger til så mange celler du vil.
Høres det ut som en plan? La oss prøve å implementere det i praksis!
Excel-datavalidering ved å bruke tilpassede regulære uttrykk
Dette eksemplet tar for seg et veldig vanlig tilfelle - hvordan bare tillate verdiene til et spesifikt mønster.
Forutsatt at du beholder noen SKU-koder i regnearket ditt og vil være sikker på at bare kodene som samsvarer med et gitt mønster kommer inn i listen. Forutsatt at hver SKU består av 2 grupper med tegn atskilt med en bindestrek, den første gruppen inkluderer 3 store bokstaver og den andre gruppen - 3 sifre, kan du identifisere slike verdier ved å bruke regex nedenfor.
Mønster : ^[A-Z]{3}-\d{3}$
Vær oppmerksom på at starten (^) og slutten ($) på strengen er forankret, så ingen andre tegn enn i mønster kan legges inn i en celle.
1. Legg til en tilpasset Regex Match-funksjon
Begynn med å sette inn RegExpMatch-funksjonen i arbeidsboken. Koden er allerede skrevet av våre Excel-guruer, så du trenger bare å kopiere den fra siden ovenfor og lime inn i VBA-editoren.
Her er funksjonens syntaks for referanse:
RegExpMatch(tekst , mønster, [match_case])Hvor:
- Tekst (obligatorisk) - en kildestreng (i vår kontekst - en validert celle).
- Mønster (obligatorisk) - et regulært uttrykk som skal samsvare.
- Samsvar_sak (valgfritt) - samsvarstype. SANN eller utelatt - store og småfølsom; FALSE – skiller mellom store og små bokstaver.
Tips. Hvis du er bruker av Ultimate Suite, kan du gjøre Regex Data Validation i Excel uten å legge til noen VBA-kode i arbeidsbøkene dine. Bare bruk en tilpasset AblebitsRegexMatch-funksjon som følger med våre Regex-verktøy.
2. Lag en navngitt formel
I målregnearket ditt, velg celle A1 (uavhengig av innholdet og uansett hvilken celle du faktisk skal validere), trykk Ctrl + F3 for å åpne navnebehandlingen, og definer et navn for denne formelen:
=RegExpMatch(Sheet1!A1, "^[A-Z]{3}-\d{3}$")
Eller du kan angi regex i en celle (A2 i dette eksemplet) og oppgi $A$2 til det andre argumentet:
=RegExpMatch(Sheet1!A1, Sheet1!$A$2)
For at formelen skal fungere riktig, pass på å bruke en relativ referanse for tekst -argumentet (A1) og absolutt referanse for mønster ($A$2).
Gi at formelen vår er beregnet på å validere SKU-numre, navngir vi den tilsvarende: Validate_SKU .
Viktig merknad! Når du definerer formelen, må du dobbeltsjekke at første argument refererer til den valgte cellen , ellers vil ikke formelen fungere. For eksempel, hvis celle A1 er valgt på arket, legg inn A1 i det første argumentet (i henhold til våre anbefalinger); hvis B2 er valgt, bruk B2 for det første argumentet, og så en. Det spiller ingen rolle hvilken referanse du bruker så lenge den samsvarer med den valgte cellen.
For trinn-for-trinninstruksjoner, vennligst se Hvordan lage en navngitt formel i Excel.
3. Sett opp datavalidering
Velg den første cellen som skal kontrolleres (A5 i vårt tilfelle) og lag en tilpasset datavalideringsregel basert på den navngitte formelen. For dette gjør du følgende:
- Klikk Data -fanen > Datavalidering .
- I Tillat rullegardinlisten, velg Egendefinert .
- Skriv inn formelen nedenfor i den tilsvarende boksen.
=Validate_SKU
- Fjern markeringen av Ignorer blank -alternativet, ellers vil ikke regelen din fungere.
Du kan eventuelt skrive en egendefinert feilmelding som skal vises når ugyldige data legges inn i en celle.
Hvis du føler at du trenger de detaljerte trinnene, her går du: Slik setter du opp tilpasset datavalidering i Excel.
4. Kopier datavalidering til flere celler
For å kopiere valideringsinnstillingene til flere celler, er dette hva du må gjøre:
- Velg cellen med datavalidering og trykk Ctrl + C for å kopier det.
- Velg andre celler du vil validere, høyreklikk på dem, klikk Lim inn spesielt og velg alternativet Validering .
- Klikk OK .
Mer informasjon finnes i Hvordan kopiere datavalidering.
Nå, hver gang noen prøver å angi en ugyldig SKU i noen av de validerte cellene, følger følgende advarselsmelding vil vises:
E-postvalidering med Regex
For å utføre e-postvalidering starter dumed å skrive et regulært uttrykk som samsvarer med en e-postadresse.
Mønster : ^[\w\.\-]+@[A-Za-z0-9]+[A-Za -z0-9\.\-]*[A-Za-z0-9]+\.[A-Za-z]{2,24}$
For en detaljert forklaring av syntaksen, vennligst se Regex for å matche gyldige e-postadresser.
Og nå spesifiser valideringskriteriene ved å utføre de allerede kjente trinnene:
- Skriv inn regex ovenfor i B2.
- Velg celle A1 og definer et navn kalt Validate_Email som refererer til:
=RegExpMatch(Sheet1!A1, Sheet1!$B$2)
- For celle B5, bruk tilpasset datavalidering ved å bruke formelen nedenfor. Det er viktig at Ignorer blank -alternativet ikke er valgt.
=Validate_Email
I tillegg kan du konfigurere en egendefinert feilmelding som ber brukeren om å angi en gyldig e-postadresse.
- Kopier regelen til cellene nedenfor.
Hvis en e-postadresse du angir i en validert celle ikke samsvarer med et regex-mønster, vil følgende varsel pop up:
Validere passord ved hjelp av regulære uttrykk
Når du bruker regex for passordvalidering, er det første du må bestemme nøyaktig hva det regulære uttrykket ditt skal sjekke. Her er noen eksempler som kan sette deg på rett spor.
Et passord må være på minst 6 tegn og kan bare inneholde bokstaver (store eller små bokstaver) og sifre:
Mønster : ^[A-Za-z0-9]{6,}$
Et passord må være minst 6 tegn langt og inneholde minst én bokstav ogett siffer:
Mønster : ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6 ,}$
Et passord må være minst 6 tegn langt og inneholde minst én stor bokstav, én liten bokstav og ett siffer:
Mønster : ^(?= .*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z\d]{6,}$
Et passord må bestå av minst 6 tegn lang og inkluderer minst én bokstav, ett siffer og ett spesialtegn:
Mønster : ^(?=.*[A-Za-z])(?=.*\d )(?=.*[@$!%*#?&_-])[A-Za-z\d@$!%*#?&_-]{6,}$
Med mønsteret etablert, kan du gå videre til å sette opp datavalidering:
- Skriv inn passordregex i C2.
- Velg celle A1 og lag en navngitt formel kalt Validate_Password :
=RegExpMatch(Sheet1!A1, Sheet1!$C$2)
- For celle C5 oppretter du en egendefinert valideringsregel med formelen nedenfor. Husk å fjerne merket for Ignorer blank .
=Validate_Password
- Kopier regelen til så mange celler du vil.
Nå kan du trygt legge til nye passord i listen. Hvis en inndatastreng ikke samsvarer med regex, vil følgende varsel minne deg på hva slags verdier som godtas:
Regex Data Validation fungerer ikke
Hvis Regex Data Validation ikke fungerer i Excel , mest sannsynlig er det på grunn av en av følgende årsaker.
RegExpMatch-funksjon mangler
Før du bruker datavalidering, må du passe på å sette inn koden til RegExpMatch-funksjonen i arbeidsboken.
Feil vanliguttrykk
For å sikre at regex fungerer som forventet, kan du skrive inn en RegExpMatch-formel i en celle og undersøke resultatene. For mer informasjon, se Excel-regulære uttrykk som samsvarer med eksempler.
For å analysere og feilsøke dine regulære uttrykk, kan du bruke gratis online regex-testtjenester som RegEx101 eller RegExr.
Feil navngitt formel
En veldig vanlig årsak til datavalideringssvikt er en regulær navngitt formel som refererer til en feil celle. I alle eksemplene anbefalte vi å definere en formel som refererer til A1:
=RegExpMatch(A1, regex)
Dette fungerer bare hvis celle A1 er aktiv når du definerer et navn og en relativ referanse (uten $-tegnet) brukes.
Ideen er at en relativ referanse spesifisert i formelen (A1) automatisk vil endre seg basert på den relative posisjonen til den validerte cellen. Med andre ord, celle A1 er valgt bare for bekvemmelighet og konsistens. Faktisk kan du velge celle B1 og referere til B1, velge celle C1 og referere til C1, og så videre. Nøkkelen er at den refererte cellen skal være den aktive cellen .
For å sjekke om den navngitte formelen din er riktig, velg en hvilken som helst celle i regnearket, åpne Name Manager, og se hvilken celle formelen peker til. Hvis det refererer til den valgte cellen, er formelen riktig. Ellers bør du endre referansen i det første argumentet.
I skjermbildetnedenfor er celle A7 valgt, noe som betyr at en navngitt formel skal ha A7 i det første argumentet. Det andre argumentet ($A$2) refererer til regex - denne referansen skal forbli konstant, så den er låst med $-tegnet.
Ignorer blankt alternativ valgt
Når du setter opp en egendefinert datavalideringsregel, er det viktig å fjerne merket for Ignorer blank . Ellers vil ikke regelen fungere på grunn av følgende årsak:
Hvis et samsvar ikke blir funnet, returnerer RegExpMatch-funksjonen FALSE. Med alternativet Ignorer blank valgt, tilsvarer FALSE blank og ignoreres.
En alternativ løsning er at formelen skal returnere TRUE:
=RegExpMatch(…)=TRUE
Slik gjør du datavalidering i Excel ved å bruke regulære uttrykk. Jeg takker for at du leser og ser frem til å se deg på bloggen vår neste uke!
Øvningsarbeidsbok for nedlasting
Eksempler på Regex Data Validation (.xlsm-fil)