Indholdsfortegnelse
Vejledningen viser, hvordan du udfører datavalidering i Excel ved hjælp af regulære udtryk ved hjælp af en brugerdefineret RegexMatch-funktion.
Når det drejer sig om at begrænse brugerinput i Excel-regneark, er datavalidering uundværlig. Vil du kun tillade tal eller datoer i en given celle? Eller begrænse tekstværdier til en bestemt længde? Eller måske ikke tillade tider uden for et givet område? Intet problem, alt dette kan nemt gøres med forudindstillede eller brugerdefinerede valideringskriterier. Men hvad hvis jeg kun vil tillade gyldige e-mail-adresser eller strenge, der matcher enDet er desværre ikke muligt. Regex, siger du? Hmm... det kunne måske fungere!
Sådan laver du Excel Data Validation med Regex
Desværre understøtter ingen af de indbyggede Excel-funktioner regexes, og datavalidering er ingen undtagelse. For at kunne validere celleinput ved hjælp af regulære udtryk skal du først oprette en brugerdefineret Regex-funktion. En anden komplikation er, at VBA-brugerdefinerede funktioner ikke kan bruges direkte til datavalidering - du skal bruge en mægler i form af en navngiven formel.
I betragtning af ovenstående skal vi kort beskrive de trin, der skal tages for at validere data i Excel ved hjælp af regexer:
- Opret en brugerdefineret Regex-funktion, der kontrollerer, om en indtastningsværdi passer til et regulært udtryk.
- Definer et navn til din Regex-formel.
- Konfigurer en regel for datavalidering baseret på den navngivne formel.
- Kopier valideringsindstillingerne til så mange celler, som du vil.
Lyder det som en plan? Lad os prøve at gennemføre den i praksis!
Excel-datavalidering ved hjælp af brugerdefinerede regulære udtryk
Dette eksempel omhandler et meget almindeligt tilfælde - hvordan man kun tillader værdier af et bestemt mønster.
Hvis du har nogle SKU-koder i dit regneark og vil være sikker på, at kun de koder, der passer til et bestemt mønster, kommer med på listen, kan du identificere sådanne værdier ved hjælp af nedenstående regex, forudsat at hver SKU består af to grupper af tegn adskilt med en bindestreg, hvor den første gruppe indeholder tre store bogstaver og den anden gruppe tre cifre.
Mønster : ^[A-Z]{3}-\d{3}$
Bemærk venligst, at starten (^) og slutningen ($) af strengen er forankret, så der kan ikke indtastes andre tegn end dem i mønsteret i en celle.
1. Tilføj en brugerdefineret Regex Match-funktion
Start med at indsætte RegExpMatch-funktionen i din projektmappe. Koden er allerede skrevet af vores Excel-guruer, så du skal blot kopiere den fra den ovenfor linkede side og indsætte den i din VBA-editor.
Her er funktionens syntaks til orientering:
RegExpMatch(text, pattern, [match_case])Hvor:
- Tekst (påkrævet) - en kildestreng (i vores sammenhæng - en valideret celle).
- Mønster (påkrævet) - et regulært udtryk, der skal matches.
- Match_case (valgfrit) - match type. TRUE eller udeladt - case-sensitive; FALSE - case-insensitive.
Tip. Hvis du er bruger af vores Ultimate Suite, kan du udføre Regex-datavalidering i Excel uden at tilføje VBA-kode til dine arbejdsbøger. Du skal blot bruge en brugerdefineret AblebitsRegexMatch-funktion, der er inkluderet i vores Regex-værktøjer.
2. Opret en navngiven formel
I dit målregneark skal du vælge celle A1 (uanset dens indhold og uanset hvilken celle du faktisk vil validere), trykke på Ctrl + F3 for at åbne Navnehåndtering og definere et navn til denne formel:
=RegExpMatch(Sheet1!A1, "^[A-Z]{3}-\d{3}$")
Du kan også indtaste regex'et i en celle (A2 i dette eksempel) og angive $A$2 som det andet argument:
=RegExpMatch(Ark1!A1, Ark1!$A$2)
For at formlen kan fungere korrekt, skal du sørge for at bruge en relativ reference til tekst argument (A1) og absolut reference for mønster ($A$2).
Da vores formel er beregnet til at validere SKU-numre, navngiver vi den i overensstemmelse hermed: Validere_SKU .
Vigtig bemærkning! Når du definerer formlen, skal du kontrollere, at det første argument henviser til den aktuelt valgte celle Hvis f.eks. celle A1 er valgt på arket, skal du angive A1 i det første argument (i overensstemmelse med vores anbefalinger); hvis B2 er valgt, skal du anvende B2 som første argument, osv. Det er ligegyldigt, hvilken reference du anvender, så længe den passer til den valgte celle.
Du kan finde trinvise instruktioner under Sådan laver du en navngiven formel i Excel.
3. Opsætning af datavalidering
Vælg den første celle, der skal kontrolleres (A5 i vores tilfælde), og lav en brugerdefineret datavalideringsregel baseret på den navngivne formel. Gør følgende:
- Klik på Data faneblad> Validering af data .
- I den Tillad på rullelisten, vælg Tilpasset .
- Indtast nedenstående formel i det tilsvarende felt.
=Validate_SKU
- Fravælg den Ignorer blank indstillingen, ellers vil din regel ikke fungere.
Du kan eventuelt skrive en brugerdefineret fejlmeddelelse, der skal vises, når der indtastes ugyldige data i en celle.
Hvis du føler, at du har brug for de detaljerede trin, kan du læse mere om det her: Sådan konfigurerer du brugerdefineret datavalidering i Excel.
4. Kopier datavalidering til flere celler
Hvis du vil kopiere valideringsindstillingerne til flere celler, skal du gøre følgende:
- Vælg cellen med datavalidering, og tryk på Ctrl + C for at kopiere den.
- Vælg andre celler, som du vil validere, højreklik på dem, klik på Indsæt specielt , og vælg den Validering mulighed.
- Klik på OK .
Du kan finde flere oplysninger i Sådan kopieres datavalidering.
Hver gang en person forsøger at indtaste en ugyldig SKU i en af de validerede celler, vises følgende advarsel, hver gang en person forsøger at indtaste en ugyldig SKU i en af de validerede celler:
Validering af e-mail med Regex
Hvis du vil udføre e-mailvalidering, starter du med at skrive et regulært udtryk, der matcher en e-mailadresse.
Mønster : ^[\w\.\-]+@[A-Za-z0-9]+[A-Za-z0-9\.\-]*[A-Za-z0-9]+\.[A-Za-z]{2,24}$
Du kan finde en detaljeret forklaring på syntaksen i Regex til at matche gyldige e-mailadresser.
Og nu skal du angive valideringskriterierne ved at udføre de allerede velkendte trin:
- Indtast ovenstående regex i B2.
- Vælg celle A1 og definer et navn kaldet Validate_Email der henviser til:
=RegExpMatch(Ark1!A1, Ark1!$B$2)
- For celle B5 skal du anvende brugerdefineret datavalidering ved hjælp af nedenstående formel. Det er vigtigt, at den Ignorer blank skal være fravalgt.
=Validate_Email
Du kan desuden konfigurere en brugerdefineret fejlmeddelelse, der beder brugeren om at indtaste en gyldig e-mailadresse.
- Kopier reglen til nedenstående celler.
Hvis en e-mail-adresse, du indtaster i en valideret celle, ikke passer til et regex-mønster, vises følgende advarsel:
Validering af adgangskoder ved hjælp af regulære udtryk
Når du bruger regex til validering af adgangskoder, skal du først og fremmest beslutte, præcis hvad dit regulære udtryk skal kontrollere. Her er nogle eksempler, der kan hjælpe dig på rette vej.
En adgangskode skal være mindst 6 tegn lang og må kun indeholde bogstaver (store og små bogstaver) og tal:
Mønster : ^[A-Za-z0-9]{6,}$
En adgangskode skal være mindst 6 tegn lang og indeholde mindst et bogstav og et ciffer:
Mønster : ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,}$
En adgangskode skal være mindst 6 tegn lang og indeholde mindst ét stort bogstav, ét lille bogstav og ét ciffer:
Mønster : ^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z\d]{6,}$
En adgangskode skal være mindst 6 tegn lang og indeholde mindst et bogstav, et ciffer og et specialtegn:
Mønster : ^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&_-])[A-Za-z\d@$!%*#?&_-]{6,}$
Når mønstret er fastlagt, kan du gå videre til at opsætte datavalidering:
- Indtast din password-regex i C2.
- Vælg celle A1 og opret en navngiven formel kaldet Validere_Password :
=RegExpMatch(Ark1!A1, Ark1!$C$2)
- For celle C5 skal du oprette en brugerdefineret valideringsregel med nedenstående formel. Husk at fjerne markeringen af Ignorer blank afkrydsningsfeltet.
=Validate_Password
- Kopier reglen til så mange celler, som du vil.
Nu kan du trygt tilføje nye adgangskoder til listen. Hvis en indtastningsstreng ikke passer til regex'en, vil følgende advarsel minde dig om, hvilke værdier der accepteres:
Regex datavalidering virker ikke
Hvis Regex-datavalidering ikke fungerer i Excel, skyldes det højst sandsynligt en af følgende årsager.
RegExpMatch-funktion mangler
Før du anvender datavalidering, skal du sørge for at indsætte koden for RegExpMatch-funktionen i din projektmappe.
Forkert regulært udtryk
Hvis du vil sikre dig, at dit regex fungerer som forventet, kan du indtaste en RegExpMatch-formel i en celle og undersøge resultaterne. Du kan finde flere oplysninger i Excel Matchning af regulære udtryk med eksempler.
For at analysere og fejlfinde dine regulære udtryk kan du bruge gratis online-testtjenester til regex-testning, f.eks. RegEx101 eller RegExr.
Forkert navngiven formel
En meget almindelig årsag til fejl i datavalideringen er en Regex-formel, der henviser til en forkert celle. I alle eksemplerne anbefaler vi at definere en formel, der henviser til A1:
=RegExpMatch(A1, regex)
Dette virker kun, hvis celle A1 er aktiv når der defineres et navn og en relativ reference (uden $-tegnet) anvendes.
Ideen er, at en relativ reference, der er angivet i formlen (A1), automatisk ændres baseret på den relative position af den validerede celle. Med andre ord er celle A1 valgt for nemheds skyld og for konsistensensens skyld. Faktisk kan du vælge celle B1 og henvise til B1, vælge celle C1 og henvise til C1 osv. Det vigtigste er, at den refereret celle bør være den aktiv celle .
Hvis du vil kontrollere, om din navngivne formel er korrekt, skal du vælge en celle i regnearket, åbne Navnehåndtering og se, hvilken celle formlen peger på. Hvis den henviser til den aktuelt valgte celle, er formlen korrekt. Ellers skal du ændre referencen i det første argument.
I skærmbilledet nedenfor er celle A7 valgt, hvilket betyder, at en navngiven formel skal have A7 i det første argument. Det andet argument ($A$2) henviser til regex - denne reference skal forblive konstant, så den er låst med $-tegnet.
Ignorer blank indstilling valgt
Når du opretter en brugerdefineret regel for datavalidering, er det vigtigt at fravælge Ignorer blank Ellers vil reglen ikke fungere af følgende årsag:
Hvis der ikke findes et match, returnerer RegExpMatch-funktionen FALSE. Med Ignorer blank er valgt, er FALSE lig med blank og ignoreres.
En alternativ løsning er udtrykkeligt at angive, at formlen skal give TRUE tilbage:
=RegExpMatch(...)=TRUE
Sådan gør du datavalidering i Excel ved hjælp af regulære udtryk. Jeg takker for din læsning og glæder mig til at se dig på vores blog i næste uge!
Arbejdsbog til download
Eksempler på regex-datavalidering (.xlsm-fil)