Inhoudsopgave
De handleiding laat zien hoe u gegevens kunt valideren in Excel met behulp van reguliere expressies met behulp van een aangepaste RegexMatch-functie.
Bij het beperken van gebruikersinvoer in Excel-werkbladen is gegevensvalidatie onmisbaar. Wilt u alleen getallen of datums in een bepaalde cel toestaan? Of tekstwaarden beperken tot een bepaalde lengte? Of misschien tijden buiten een bepaald bereik niet toestaan? Geen probleem, dit kan allemaal gemakkelijk met vooraf ingestelde of aangepaste validatiecriteria. Maar wat als ik alleen geldige e-mailadressen wil toestaan of strings die overeenkomen met eenspecifiek patroon? Helaas, dat is niet mogelijk. Regex zeg je? Hmm... dat zou kunnen werken!
Hoe Excel-gegevens valideren met Regex
Helaas ondersteunt geen van de ingebouwde Excel-functies regexen, en Gegevensvalidatie is daarop geen uitzondering. Om celinvoer te kunnen valideren met behulp van reguliere expressies, moet u eerst een aangepaste Regex-functie maken. Een andere complicatie is dat VBA-gebruikersgedefinieerde functies niet rechtstreeks aan Gegevensvalidatie kunnen worden aangeboden - u hebt een tussenpersoon nodig in de vorm van een genoemde formule.
Gelet op het bovenstaande zullen we kort de stappen schetsen die moeten worden genomen om gegevens in Excel te valideren met behulp van regexen:
- Maak een aangepaste Regex-functie die controleert of een invoerwaarde overeenkomt met een reguliere expressie.
- Definieer een naam voor uw Regex-formule.
- Configureer een Data Validation regel gebaseerd op de genoemde formule.
- Kopieer de validatie-instellingen naar zoveel cellen als u wilt.
Klinkt als een plan? Laten we proberen het in de praktijk te brengen!
Excel-gegevensvalidatie met behulp van aangepaste reguliere expressies
Dit voorbeeld behandelt een veel voorkomend geval - hoe alleen de waarden van een specifiek patroon toe te staan.
Stel dat u een aantal SKU-codes in uw werkblad bewaart en er zeker van wilt zijn dat alleen de codes die aan een bepaald patroon voldoen in de lijst terechtkomen. Op voorwaarde dat elk SKU bestaat uit 2 groepen tekens, gescheiden door een koppelteken, waarbij de eerste groep 3 hoofdletters bevat en de tweede groep - 3 cijfers, kunt u dergelijke waarden identificeren met de onderstaande regex.
Patroon : ^[A-Z]{3}-{3}$
Merk op dat het begin (^) en het einde ($) van de tekenreeks verankerd zijn, zodat geen andere tekens dan in het patroon in een cel kunnen worden ingevoerd.
1. Voeg een aangepaste Regex Match functie toe
Begin met het invoegen van de RegExpMatch-functie in uw werkmap. De code is al geschreven door onze Excel-goeroes, dus u hoeft hem alleen maar te kopiëren van de hierboven gelinkte pagina en te plakken in uw VBA-editor.
Hier is de syntaxis van de functie ter referentie:
RegExpMatch(tekst, patroon, [match_case])Waar:
- Tekst (vereist) - een bronstring (in onze context - een gevalideerde cel).
- Patroon (vereist) - een reguliere uitdrukking om overeen te komen.
- Geval (optioneel) - type overeenkomst. TRUE of weggelaten - hoofdlettergevoelig; FALSE - hoofdletterongevoelig.
Tip: Als u een gebruiker bent van onze Ultimate Suite, dan kunt u Regex Data Validatie uitvoeren in Excel zonder VBA code toe te voegen aan uw werkmappen. Maak gewoon gebruik van een aangepaste AblebitsRegexMatch functie die is opgenomen in onze Regex Tools.
2. Maak een formule met naam
Selecteer in uw doelwerkblad cel A1 (ongeacht de inhoud ervan en ongeacht welke cel u eigenlijk gaat valideren), druk op Ctrl + F3 om Naambeheer te openen en definieer een naam voor deze formule:
=RegExpMatch(Sheet1!A1, "^[A-Z]{3}-\d{3}$")
Of u kunt de regex invoeren in een cel (A2 in dit voorbeeld) en $A$2 toevoegen aan het tweede argument:
=RegExpMatch(Sheet1!A1, Sheet1!$A$2)
Om de formule correct te laten werken, moet u een relatieve referentie gebruiken voor de tekst argument (A1) en absolute referentie voor patroon ($A$2).
Aangezien onze formule bedoeld is om SKU-nummers te valideren, geven wij de formule dezelfde naam: Valideer_SKU .
Belangrijke opmerking! Controleer bij het definiëren van de formule of de het eerste argument verwijst naar de huidig geselecteerde cel Anders werkt de formule niet. Als bijvoorbeeld cel A1 op het blad is geselecteerd, zet dan A1 in het eerste argument (volgens onze aanbevelingen); als B2 is geselecteerd, gebruik dan B2 als eerste argument, enzovoort. Het maakt niet echt uit welke specifieke verwijzing u gebruikt, zolang deze maar overeenkomt met de momenteel geselecteerde cel.
Voor stapsgewijze instructies, zie Hoe maak ik een formule met naam in Excel.
3. Gegevensvalidatie instellen
Selecteer de eerste cel die moet worden gecontroleerd (A5 in ons geval) en maak een aangepaste gegevensvalidatieregel op basis van de genoemde formule. Doe hiervoor het volgende:
- Klik op Gegevens tab> Validatie van gegevens .
- In de Sta toe. drop-down lijst, selecteer Aangepaste .
- Voer de onderstaande formule in het overeenkomstige vak in.
=Validate_SKU
- Maak de selectie van de Blanco negeren optie, anders werkt uw regel niet.
Optioneel kunt u een aangepaste foutmelding typen die wordt weergegeven wanneer ongeldige gegevens worden ingevoerd in een cel.
Als u denkt dat u de gedetailleerde stappen nodig hebt, kunt u hier terecht: Hoe aangepaste gegevensvalidatie instellen in Excel.
4. Kopieer gegevensvalidatie naar meer cellen
Om de validatie-instellingen naar meer cellen te kopiëren, moet u het volgende doen:
- Selecteer de cel met gegevensvalidatie en druk op Ctrl + C om deze te kopiëren.
- Selecteer andere cellen die u wilt valideren, rechtsklik erop, klik op Speciaal plakken en kies de Validatie optie.
- Klik op OK .
Meer informatie vindt u in Hoe kopieert u gegevensvalidatie?
Telkens wanneer iemand probeert een ongeldig SKU in te voeren in een van de gevalideerde cellen, verschijnt het volgende waarschuwingsbericht:
E-mail validatie met Regex
Om e-mail te valideren begint u met het schrijven van een reguliere expressie die overeenkomt met een e-mailadres.
Patroon : ^[\w\.\-]+@[A-Za-z0-9]+[A-Za-z0-9\.\-]*[A-Za-z0-9]+\.[A-Za-z]{2,24}$
Voor een gedetailleerde uitleg van de syntaxis, zie Regex om geldige e-mailadressen te matchen.
En nu de validatiecriteria specificeren door de reeds bekende stappen uit te voeren:
- Voer bovenstaande regex in B2 in.
- Selecteer cel A1 en definieer een naam genaamd Valideer e-mail dat verwijst naar:
=RegExpMatch(Sheet1!A1, Sheet1!$B$2)
- Pas voor cel B5 aangepaste gegevensvalidatie toe met de onderstaande formule. Het is essentieel dat de Blanco negeren moet niet geselecteerd zijn.
=Validate_Email
Bovendien kunt u een aangepaste foutmelding configureren waarin de gebruiker wordt gevraagd een geldig e-mailadres in te voeren.
- Kopieer de regel naar de onderstaande cellen.
Als een e-mailadres dat u invoert in een gevalideerde cel niet overeenkomt met een regexpatroon, verschijnt de volgende waarschuwing:
Valideren van wachtwoorden met behulp van reguliere expressies
Wanneer u regex gebruikt voor wachtwoordvalidatie, is het eerste wat u moet beslissen wat uw reguliere expressie precies moet controleren. Hier zijn enkele voorbeelden die u op het juiste spoor kunnen zetten.
Een wachtwoord moet minstens 6 tekens lang zijn en mag alleen letters (hoofdletters of kleine letters) en cijfers bevatten:
Patroon : ^[A-Za-z0-9]{6,}$
Een wachtwoord moet minimaal 6 tekens lang zijn en ten minste één letter en één cijfer bevatten:
Patroon : ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,}$
Een wachtwoord moet minimaal 6 tekens lang zijn en ten minste één hoofdletter, één kleine letter en één cijfer bevatten:
Patroon : ^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z\d]{6,}$
Een wachtwoord moet minimaal 6 tekens lang zijn en ten minste één letter, één cijfer en één speciaal teken bevatten:
Patroon : ^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&_-])[A-Za-z\d@$!%*#?&_-]{6,}$
Nu het patroon is vastgesteld, kunt u overgaan tot het instellen van gegevensvalidatie:
- Voer uw wachtwoordregex in C2 in.
- Selecteer cel A1 en maak een formule met de naam Valideer_Wachtwoord :
=RegExpMatch(Sheet1!A1, Sheet1!$C$2)
- Maak voor cel C5 een aangepaste validatieregel met de onderstaande formule. Vergeet niet de selectie van de Blanco negeren check box.
=Validate_Password
- Kopieer de regel naar zoveel cellen als u wilt.
Nu kunt u veilig nieuwe wachtwoorden toevoegen aan de lijst. Als een ingevoerde string niet overeenkomt met de regex, zal de volgende waarschuwing u eraan herinneren welke soorten waarden worden geaccepteerd:
Regex-gegevensvalidatie werkt niet
Als Regex Data Validation niet werkt in uw Excel, komt dat waarschijnlijk door een van de volgende redenen.
RegExpMatch-functie ontbreekt
Voordat u Gegevensvalidatie toepast, moet u de code van de functie RegExpMatch in uw werkmap invoegen.
Onjuiste reguliere uitdrukking
Om te controleren of uw regex werkt zoals verwacht, kunt u een RegExpMatch-formule invoeren in een bepaalde cel en de resultaten onderzoeken. Voor meer informatie, zie Excel Regelmatige expressie matching met voorbeelden.
Om uw reguliere uitdrukkingen te analyseren en te debuggen, kunt u gratis online regex-testservices gebruiken, zoals RegEx101 of RegExr.
Verkeerd genoemde formule
Een veel voorkomende reden voor mislukte gegevensvalidatie is een Regex-formule die verwijst naar een verkeerde cel. In alle voorbeelden is aanbevolen een formule te definiëren die verwijst naar A1:
=RegExpMatch(A1, regex)
Dit werkt alleen als cel A1 is actief bij het definiëren van een naam en een relatieve referentie (zonder het $-teken) wordt gebruikt.
Het idee is dat een in de formule gespecificeerde relatieve verwijzing (A1) automatisch zal veranderen op basis van de relatieve positie van de gevalideerde cel. Met andere woorden, cel A1 is alleen voor het gemak en de consistentie gekozen. In feite kunt u cel B1 selecteren en naar B1 verwijzen, cel C1 selecteren en naar C1 verwijzen, enzovoort. Het belangrijkste is dat het cel waarnaar verwezen wordt zou de actieve cel .
Om te controleren of uw genoemde formule correct is, selecteert u een willekeurige cel in uw werkblad, opent u de Naammanager en kijkt u naar welke cel de formule verwijst. Als de formule verwijst naar de huidig geselecteerde cel, is de formule correct. Anders moet u de verwijzing in het eerste argument wijzigen.
In de schermafbeelding hieronder is cel A7 geselecteerd, wat betekent dat een formule met een naam A7 moet hebben in het eerste argument. Het tweede argument ($A$2) verwijst naar de regex - deze verwijzing moet constant blijven, dus is deze vergrendeld met het $-teken.
Negeer blanco optie geselecteerd
Bij het opzetten van een aangepaste regel voor gegevensvalidatie is het belangrijk om de selectie van de Blanco negeren Anders werkt de regel niet om de volgende reden:
Als er geen overeenkomst wordt gevonden, retourneert de RegExpMatch-functie FALSE. Met de Blanco negeren optie geselecteerd, is FALSE gelijk aan leeg en wordt genegeerd.
Een alternatieve oplossing is expliciet stellen dat de formule TRUE moet opleveren:
=RegExpMatch(...)=TRUE
Dat is hoe u gegevensvalidatie in Excel kunt uitvoeren met behulp van reguliere expressies. Ik dank u voor het lezen en zie u graag volgende week op onze blog!
Praktijk werkboek om te downloaden
Regex-gegevensvalidatievoorbeelden (.xlsm-bestand)