Excel Data Validasie met behulp van gereelde uitdrukkings (Regex)

  • Deel Dit
Michael Brown

Die tutoriaal wys hoe om data-validering in Excel te doen deur gebruik te maak van gereelde uitdrukkings met behulp van 'n pasgemaakte RegexMatch-funksie.

Wanneer dit kom by die beperking van gebruikersinvoer in Excel-werkblaaie, Data Validation is onontbeerlik. Wil jy slegs getalle of datums in 'n gegewe sel toelaat? Of beperk tekswaardes tot 'n spesifieke lengte? Of miskien tye buite 'n gegewe reeks verbied? Geen probleem nie, dit alles kan maklik gedoen word met voorafbepaalde of pasgemaakte valideringskriteria. Maar wat as ek slegs geldige e-posadresse of stringe wil toelaat wat by 'n spesifieke patroon pas? Ai, dis nie moontlik nie. Regex sê jy? Hmm... dit kan dalk werk!

    Hoe om Excel-datavalidering met Regex te doen

    Ongelukkig ondersteun nie een van die ingeboude Excel-kenmerke regexes nie, en datavalidering is nie uitsondering. Om selinvoer met behulp van gewone uitdrukkings te kan valideer, moet jy eers 'n pasgemaakte Regex-funksie skep. Nog 'n komplikasie is dat VBA-gebruikergedefinieerde funksies nie direk aan Data Validation bedien kan word nie - jy sal 'n bemiddelaar in die vorm van 'n benoemde formule nodig hê.

    In die lig van bogenoemde, laat ons kortliks die stappe uiteensit wat geneem moet word om data in Excel te valideer deur gebruik te maak van regexes:

    1. Skep 'n pasgemaakte Regex-funksie wat kontroleer of 'n invoerwaarde by 'n gewone uitdrukking pas.
    2. Definieer 'n naam vir jou Regex-formule.
    3. Stel 'n datavalideringsreël op gebaseer op die genoemde formule.
    4. Kopieer dievalidering-instellings na soveel selle as wat jy wil.

    Klink na 'n plan? Kom ons probeer dit in die praktyk implementeer!

    Excel-datavalidering deur gebruik te maak van gepasmaakte gereelde uitdrukkings

    Hierdie voorbeeld spreek 'n baie algemene geval aan - hoe om slegs die waardes van 'n spesifieke patroon toe te laat.

    Gestel jy hou 'n paar SKU-kodes in jou werkblad en wil seker wees dat slegs die kodes wat by 'n gegewe patroon pas, in die lys kom. Met dien verstande dat elke SKU bestaan ​​uit 2 groepe karakters geskei met 'n koppelteken, die eerste groep wat 3 hoofletters en die tweede groep - 3 syfers insluit, kan jy sulke waardes identifiseer deur die onderstaande regeks te gebruik.

    Patroon : ^[A-Z]{3}-\d{3}$

    Let asseblief kennis dat die begin (^) en einde ($) van die string geanker is, dus geen karakters anders as in die patroon kan in 'n sel ingevoer word.

    1. Voeg 'n pasgemaakte Regex Match-funksie by

    Begin met die invoeging van die RegExpMatch-funksie in jou werkboek. Die kode is reeds deur ons Excel-ghoeroes geskryf, so jy hoef dit net van die bo-geskakelde bladsy af te kopieer en in jou VBA-redigeerder te plak.

    Hier is die funksie se sintaksis vir jou verwysing:

    RegExpMatch(teks) , patroon, [match_case])

    Waar:

    • Teks (vereis) - 'n bronstring (in ons konteks - 'n gevalideerde sel).
    • Patroon (vereis) - 'n gereelde uitdrukking om te pas.
    • Pasgeval (opsioneel) - pastipe. WAAR of weggelaat - hoofletters-sensitief; ONWAAR - hoofletter-onsensitief.

    Wenk. As jy 'n gebruiker van ons Ultimate Suite is, kan jy Regex Data Validation in Excel doen sonder om enige VBA-kode by jou werkboeke te voeg. Gebruik net 'n pasgemaakte AblebitsRegexMatch-funksie wat by ons Regex-nutsgoed ingesluit is.

    2. Skep 'n benoemde formule

    In jou teikenwerkblad, kies sel A1 (ongeag die inhoud daarvan en maak nie saak watter sel jy eintlik gaan valideer nie), druk Ctrl + F3 om die Naambestuurder oop te maak, en definieer 'n naam vir hierdie formule:

    =RegExpMatch(Sheet1!A1, "^[A-Z]{3}-\d{3}$")

    Of jy kan die regeks in een of ander sel invoer (A2 in hierdie voorbeeld) en $A$2 aan die tweede argument verskaf:

    =RegExpMatch(Sheet1!A1, Sheet1!$A$2)

    Vir die formule om korrek te werk, maak seker dat jy 'n relatiewe verwysing vir die teks -argument (A1) en absolute verwysing vir patroon ($A$2) gebruik.

    Gegewe dat ons formule bedoel is om SKU-nommers te valideer, noem ons dit dienooreenkomstig: Validateer_SKU .

    Belangrike nota! Wanneer jy die formule definieer, moet jy asseblief dubbel seker maak dat die eerste argument verwys na die tans geselekteerde sel , anders sal die formule nie werk nie. Byvoorbeeld, as sel A1 op die blad gekies is, plaas A1 in die eerste argument (soos ons aanbevelings); as B2 gekies is, gebruik dan B2 vir die eerste argument, en so een. Dit maak nie regtig saak watter spesifieke verwysing jy gebruik nie, solank dit pas by die tans geselekteerde sel.

    Vir stap-vir-stapinstruksies, sien asseblief Hoe om 'n benoemde formule in Excel te maak.

    3. Stel datavalidering op

    Kies die eerste sel wat nagegaan moet word (A5 in ons geval) en maak 'n pasgemaakte datavalideringsreël gebaseer op die genoemde formule. Doen hiervoor die volgende:

    1. Klik Data -oortjie > Datavalidering .
    2. In die Laat toe aftreklys, kies Custom .
    3. Voer die onderstaande formule in die ooreenstemmende blokkie in.

      =Validate_SKU

    4. Ontkies die Ignoreer leeg opsie, anders sal jou reël nie werk nie.

    Opsioneel kan jy tik 'n persoonlike foutboodskap wat vertoon moet word wanneer ongeldige data in 'n sel ingevoer word.

    As jy voel dat jy die gedetailleerde stappe nodig het, hier gaan jy: Hoe om persoonlike datavalidering in Excel op te stel.

    4. Kopieer datavalidering na meer selle

    Om die valideringsinstellings na meer selle te kopieer, is dit wat jy moet doen:

    1. Kies die sel met datavalidering en druk Ctrl + C om kopieer dit.
    2. Kies ander selle wat jy wil valideer, regskliek hulle, klik Plak Spesiaal , en kies die Validasie opsie.
    3. Klik OK .

    Meer inligting kan gevind word in Hoe om datavalidering te kopieer.

    Nou, elke keer as iemand probeer om 'n ongeldige SKU in enige van die gevalideerde selle in te voer, die volgende waarskuwingsboodskap sal verskyn:

    E-pos validering met Regex

    Om e-pos validering uit te voer, begin jymet die skryf van 'n gewone uitdrukking wat by 'n e-posadres pas.

    Patroon : ^[\w\.\-]+@[A-Za-z0-9]+[A-Za -z0-9\.\-]*[A-Za-z0-9]+\.[A-Za-z]{2,24}$

    Vir die gedetailleerde verduideliking van die sintaksis, asseblief sien Regex om geldige e-posadresse te pas.

    En spesifiseer nou die valideringskriteria deur die reeds bekende stappe uit te voer:

    1. Voer die regex hierbo in B2 in.
    2. Kies sel A1 en definieer 'n naam genaamd Validateer_E-pos wat verwys na:

      =RegExpMatch(Sheet1!A1, Sheet1!$B$2)

    3. Vir sel B5, pas pasgemaakte datavalidering toe deur die onderstaande formule toe te pas. Dit is noodsaaklik dat die Ignoreer leë opsie ontkies moet word.

      =Validate_Email

      Daarbenewens kan jy 'n pasgemaakte foutboodskap opstel wat die gebruiker vra om 'n geldige e-posadres in te voer.

    4. Kopieer die reël na die onderstaande selle.

    As 'n e-posadres wat jy in 'n gevalideerde sel invoer nie by 'n regekspatroon pas nie, sal die volgende waarskuwing pop-up:

    Bekragtig wagwoorde deur gebruik te maak van gereelde uitdrukkings

    Wanneer jy regex gebruik vir wagwoordvalidering, is die eerste ding om te besluit presies wat jou gewone uitdrukking moet kontroleer. Hier is 'n paar voorbeelde wat jou op die regte pad kan plaas.

    'n Wagwoord moet ten minste 6 karakters lank wees en kan slegs letters (hoofletters of kleinletters) en syfers bevat:

    Patroon : ^[A-Za-z0-9]{6,}$

    'n Wagwoord moet minstens 6 karakters lank wees en ten minste een letter eneen syfer:

    Patroon : ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6 ,}$

    'n Wagwoord moet minstens 6 karakters lank wees en ten minste een hoofletter, een kleinletter en een syfer insluit:

    Patroon : ^(?= .*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z\d]{6,}$

    'n Wagwoord moet minstens 6 karakters wees lank en sluit ten minste een letter, een syfer en een spesiale karakter in:

    Patroon : ^(?=.*[A-Za-z])(?=.*\d )(?=.*[@$!%*#?&_-])[A-Za-z\d@$!%*#?&_-]{6,}$

    Met die patroon vasgestel, kan jy voortgaan met die opstel van Data Validation:

    1. Voer jou wagwoord regex in C2 in.
    2. Kies sel A1 en skep 'n benoemde formule genaamd Validate_Password :

      =RegExpMatch(Sheet1!A1, Sheet1!$C$2)

    3. Vir sel C5, skep 'n pasgemaakte valideringsreël met die onderstaande formule. Onthou om die Ignoreer leë -merkblokkie te ontmerk.

      =Validate_Password

    4. Kopieer die reël na soveel selle as wat jy wil.

    Nou kan jy veilig nuwe wagwoorde by die lys voeg. As 'n invoerstring nie ooreenstem met die regex nie, sal die volgende waarskuwing jou herinner watter soort waardes aanvaar word:

    Regex Data Validation nie werk nie

    As Regex Data Validation nie in jou Excel werk nie , heel waarskynlik is dit as gevolg van een van die volgende redes.

    RegExpMatch-funksie ontbreek

    Voordat jy Data Validation toepas, maak seker dat jy die kode van die RegExpMatch-funksie in jou werkboek invoeg.

    Verkeerde gereeldeuitdrukking

    Om seker te maak dat jou regex werk soos verwag word, kan jy 'n RegExpMatch-formule in een of ander sel invoer en die resultate ondersoek. Vir meer inligting, sien asseblief Excel Gereelde uitdrukking wat ooreenstem met voorbeelde.

    Om jou gereelde uitdrukkings te ontleed en te ontfout, kan jy gratis aanlyn regex-toetsdienste soos RegEx101 of RegExr gebruik.

    Verkeerde benoemde formule

    'n Baie algemene rede van datavalideringsmislukking is 'n Regex-benoemde formule wat na 'n verkeerde sel verwys. In al die voorbeelde het ons aanbeveel om 'n formule te definieer wat na A1 verwys:

    =RegExpMatch(A1, regex)

    Dit werk net as sel A1 aktief is wanneer 'n naam gedefinieer word en 'n relatiewe verwysing (sonder die $-teken) word gebruik.

    Die idee is dat 'n relatiewe verwysing gespesifiseer in die formule (A1) outomaties sal verander op grond van die relatiewe posisie van die gevalideerde sel. Met ander woorde, sel A1 word net vir gerief en konsekwentheid gekies. Trouens, jy kan sel B1 kies en na B1 verwys, sel C1 kies en na C1 verwys, ensovoorts. Die belangrikste ding is dat die verwysde sel die aktiewe sel moet wees.

    Om te kyk of jou benoemde formule korrek is, kies enige sel in jou werkblad, maak die Naam Bestuurder, en kyk na watter sel die formule wys. As dit na die tans gekose sel verwys, is die formule reg. Andersins moet jy die verwysing in die eerste argument verander.

    In die skermskoothieronder is sel A7 gekies, wat beteken dat 'n benoemde formule A7 in die eerste argument moet hê. Die tweede argument ($A$2) verwys na die regex - hierdie verwysing is veronderstel om konstant te bly, dus is dit gesluit met die $-teken.

    Ignoreer leë opsie gekies

    Wanneer 'n pasgemaakte datavalideringsreël opgestel word, is dit belangrik om die Ignoreer leë -merkblokkie te ontmerk. Andersins sal die reël nie werk nie as gevolg van die volgende rede:

    As 'n passing nie gevind word nie, gee die RegExpMatch-funksie FALSE terug. Met die Ignoreer leë opsie gekies, is ONWAAR gelyk aan leeg en word geïgnoreer.

    'n Alternatiewe oplossing is uitdruklik om te sê dat die formule WAAR moet teruggee:

    =RegExpMatch(…)=TRUE

    Dit is hoe om datavalidering in Excel te doen deur gebruik te maak van gewone uitdrukkings. Ek bedank jou vir die lees en sien uit daarna om jou volgende week op ons blog te sien!

    Oefen werkboek vir aflaai

    Regex Data Validation voorbeelde (.xlsm lêer)

    Michael Brown is 'n toegewyde tegnologie-entoesias met 'n passie om komplekse prosesse te vereenvoudig deur sagteware-instrumente te gebruik. Met meer as 'n dekade se ondervinding in die tegnologiebedryf, het hy sy vaardighede in Microsoft Excel en Outlook, sowel as Google Sheets en Docs, opgeskerp. Michael se blog is toegewy daaraan om sy kennis en kundigheid met ander te deel, en verskaf maklik-om-te volg wenke en tutoriale vir die verbetering van produktiwiteit en doeltreffendheid. Of jy nou 'n ervare professionele persoon of 'n beginner is, Michael se blog bied waardevolle insigte en praktiese raad om die meeste uit hierdie noodsaaklike sagteware-nutsmiddels te kry.