"Excel" duomenų tikrinimas naudojant reguliarias išraiškas (Regex)

  • Pasidalinti
Michael Brown

Mokomojoje programoje parodyta, kaip "Excel" programoje atlikti duomenų patvirtinimą naudojant reguliarias išraiškas, naudojant pasirinktinę funkciją "RegexMatch".

Kai reikia apriboti naudotojo įvesties duomenis "Excel" darbalapiuose, duomenų patvirtinimas yra būtinas. Norite leisti tam tikroje ląstelėje įrašyti tik skaičius arba datas? Arba apriboti teksto reikšmes iki tam tikro ilgio? O gal neleisti įrašyti laiko už tam tikro intervalo ribų? Jokių problemų, visa tai galima lengvai padaryti naudojant iš anksto nustatytus arba pasirinktinius patvirtinimo kriterijus. Bet ką daryti, jei noriu leisti įrašyti tik galiojančius el. pašto adresus arba eilutes, atitinkančiasDeja, tai neįmanoma. Sakote, regeksas? Hmm... tai gali veikti!

    Kaip atlikti "Excel" duomenų patvirtinimą naudojant "Regex

    Deja, nė viena iš integruotų "Excel" funkcijų nepalaiko regeksų, ne išimtis ir "Data Validation". Kad galėtumėte tikrinti langelių įvestį naudodami reguliarias išraiškas, pirmiausia turite sukurti pasirinktinę "Regex" funkciją. Dar vienas sunkumas yra tas, kad VBA naudotojo apibrėžtų funkcijų negalima tiesiogiai pateikti "Data Validation" - jums reikės tarpininko - pavadintos formulės.

    Atsižvelgdami į tai, kas išdėstyta pirmiau, trumpai apibūdinkime veiksmus, kurių reikia imtis norint patvirtinti duomenis "Excel" programoje naudojant regeksus:

    1. Sukurkite pasirinktinę "Regex" funkciją, kuri tikrina, ar įvesties reikšmė atitinka reguliariąją išraišką.
    2. Apibrėžkite "Regex" formulės pavadinimą.
    3. Sukonfigūruokite duomenų tikrinimo taisyklę pagal pavadintą formulę.
    4. Nukopijuokite patvirtinimo nustatymus į tiek langelių, kiek norite.

    Skamba kaip planas? Pabandykime jį įgyvendinti praktiškai!

    "Excel" duomenų tikrinimas naudojant pasirinktines reguliarias išraiškas

    Šiame pavyzdyje nagrinėjamas labai dažnas atvejis - kaip leisti tik tam tikro šablono reikšmes.

    Tarkime, darbo lentelėje saugote tam tikrus SKU kodus ir norite būti tikri, kad į sąrašą pateks tik tam tikrą šabloną atitinkantys kodai. Jei kiekvieną SKU sudaro 2 ženklų grupės, atskirtos brūkšneliu, pirmoji grupė apima 3 didžiąsias raides, o antroji - 3 skaitmenis, tokias reikšmes galite nustatyti naudodami toliau pateiktą regex.

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

    Atkreipkite dėmesį, kad eilutės pradžia (^) ir pabaiga ($) yra įtvirtintos, todėl į ląstelę negalima įvesti jokių simbolių, išskyrus šablono simbolius.

    1. Pridėkite pasirinktinę "Regex Match" funkciją

    Pradėkite nuo funkcijos RegExpMatch įterpimo į savo darbaknygę. Kodą jau parašė mūsų "Excel" guru, todėl jums tereikia jį nukopijuoti iš pirmiau nurodyto puslapio ir įklijuoti į VBA redaktorių.

    Pateikiame funkcijos sintaksę:

    RegExpMatch(tekstas, šablonas, [match_case])

    Kur:

    • Tekstas (privaloma) - šaltinio eilutė (mūsų kontekste - patvirtinta ląstelė).
    • Modelis (privaloma) - reguliarioji išraiška, kurią reikia suderinti.
    • Match_case (neprivaloma) - atitikimo tipas. TRUE arba praleista - jautrus didžiosioms raidėms; FALSE - nejautrus didžiosioms raidėms.

    Patarimas. Jei naudojatės mūsų "Ultimate Suite" paketu, galite atlikti "Regex" duomenų tikrinimą "Excel" programoje nepridėdami jokio VBA kodo į savo darbaknyges. Tiesiog pasinaudokite pasirinktine "AblebitsRegexMatch" funkcija, įtraukta į mūsų "Regex" įrankius.

    2. Sukurkite pavadintą formulę

    Tiksliniame darbalapyje pasirinkite langelį A1 (neatsižvelgiant į jo turinį ir į tai, kurį langelį iš tikrųjų ketinate patvirtinti), paspauskite Ctrl + F3, kad atidarytumėte pavadinimų tvarkyklę, ir apibrėžkite šios formulės pavadinimą:

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

    Arba galite įvesti regeksą į kurį nors langelį (šiame pavyzdyje - A2) ir kaip antrąjį argumentą nurodyti $A$2:

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

    Kad formulė veiktų teisingai, būtinai naudokite santykinę nuorodą tekstas argumentas (A1) ir absoliuti nuoroda modelis ($A$2).

    Atsižvelgiant į tai, kad mūsų formulė skirta SKU numeriams patvirtinti, ją atitinkamai pavadiname: Validate_SKU .

    Svarbi pastaba! Nustatydami formulę, dar kartą patikrinkite, ar pirmasis argumentas nurodo šiuo metu pasirinktą ląstelę kitaip formulė neveiks. Pavyzdžiui, jei lape pasirinktas langelis A1, į pirmąjį argumentą įrašykite A1 (pagal mūsų rekomendacijas); jei pasirinktas langelis B2, tuomet pirmajam argumentui naudokite B2 ir t. t. Iš tikrųjų nesvarbu, kokią konkrečią nuorodą naudosite, jei ji atitinka šiuo metu pasirinktą langelį.

    Žingsnis po žingsnio instrukcijų rasite skyriuje Kaip sukurti pavadintą formulę "Excel" programoje.

    3. Nustatykite duomenų patvirtinimą

    Pasirinkite pirmąją tikrintiną ląstelę (mūsų atveju A5) ir sukurkite pasirinktinę duomenų patvirtinimo taisyklę, pagrįstą įvardyta formule. Šiuo tikslu atlikite šiuos veiksmus:

    1. Spustelėkite Duomenys skirtukas> Duomenų patvirtinimas .
    2. Į Leisti išplečiamajame sąraše pasirinkite Pasirinktinis .
    3. Į atitinkamą langelį įrašykite toliau pateiktą formulę.

      =Validate_SKU

    4. Atšaukite Ignoruoti tuščią langą parinktį, kitaip taisyklė neveiks.

    Pasirinktinai galite įvesti pasirinktinį klaidos pranešimą, kuris bus rodomas, kai ląstelėje bus įvesti neteisingi duomenys.

    Jei manote, kad jums reikia išsamių veiksmų, čia rasite: Kaip nustatyti pasirinktinį duomenų patvirtinimą programoje "Excel".

    4. Duomenų patvirtinimo kopijavimas į daugiau langelių

    Norėdami nukopijuoti patvirtinimo nustatymus į daugiau langelių, turite atlikti šiuos veiksmus:

    1. Pažymėkite ląstelę su duomenų patvirtinimu ir paspauskite Ctrl + C, kad ją nukopijuotumėte.
    2. Pasirinkite kitas ląsteles, kurias norite patvirtinti, spustelėkite jas dešiniuoju pelės klavišu, spustelėkite Specialusis įklijavimas ir pasirinkite Patvirtinimas galimybė.
    3. Spustelėkite GERAI .

    Daugiau informacijos rasite skyrelyje Kaip kopijuoti duomenų patvirtinimą.

    Dabar kiekvieną kartą, kai kas nors bandys įvesti negaliojantį SKU į bet kurį iš patvirtintų langelių, bus rodomas toks įspėjamasis pranešimas:

    El. pašto patvirtinimas naudojant "Regex

    Norėdami atlikti el. pašto patvirtinimo funkciją, pirmiausia parašykite reguliariąją išraišką, atitinkančią el. pašto adresą.

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

    Išsamesnį sintaksės paaiškinimą rasite skyriuje "Regex" galiojančių el. pašto adresų atitikčiai nustatyti.

    Dabar nurodykite patvirtinimo kriterijus atlikdami jau žinomus veiksmus:

    1. Įveskite minėtą regex į B2.
    2. Pasirinkite ląstelę A1 ir apibrėžkite pavadinimą Validate_Email kuris nurodo:

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

    3. Ląstelei B5 pritaikykite pasirinktinį duomenų patvirtinimą naudodami toliau pateiktą formulę. Labai svarbu, kad Ignoruoti tuščią langą parinktis neturėtų būti pažymėta.

      =Validate_Email

      Be to, galite sukonfigūruoti pasirinktinį klaidos pranešimą, raginantį naudotoją įvesti galiojantį el. pašto adresą.

    4. Nukopijuokite taisyklę į toliau esančius langelius.

    Jei į patvirtintą langelį įvestas el. pašto adresas neatitinka regex šablono, pasirodys šis įspėjimas:

    Slaptažodžių tikrinimas naudojant reguliarias išraiškas

    Naudojant regex slaptažodžiams patvirtinti, pirmiausia reikia nuspręsti, ką tiksliai turėtų tikrinti reguliarioji išraiška. Toliau pateikiami keli pavyzdžiai, kurie gali padėti jums rasti teisingą kelią.

    Slaptažodis turi būti ne trumpesnis kaip 6 ženklų ilgio, jame gali būti tik raidės (didžiosios arba mažosios) ir skaitmenys:

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

    Slaptažodis turi būti ne trumpesnis kaip 6 simbolių, jame turi būti bent viena raidė ir vienas skaitmuo:

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

    Slaptažodį turi sudaryti ne mažiau kaip 6 simboliai ir bent viena didžioji raidė, viena mažoji raidė ir vienas skaitmuo:

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

    Slaptažodį turi sudaryti ne mažiau kaip 6 simboliai, bent viena raidė, vienas skaitmuo ir vienas specialusis simbolis:

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

    Sukūrę šabloną, galite pereiti prie duomenų patvirtinimo nustatymo:

    1. Įveskite slaptažodžio regeksą į C2 langelį.
    2. Pasirinkite A1 langelį ir sukurkite pavadintą formulę Validate_Password :

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

    3. Ląstelei C5 sukurkite pasirinktinę patvirtinimo taisyklę, naudodami toliau pateiktą formulę. Nepamirškite išbraukti Ignoruoti tuščią langą žymimasis langelis.

      =Validate_Password

    4. Nukopijuokite taisyklę į tiek langelių, kiek norite.

    Dabar galite saugiai įtraukti naujus slaptažodžius į sąrašą. Jei įvesties eilutė neatitinka regex, toliau pateikiamas įspėjimas primins, kokios reikšmės priimtinos:

    Neveikia "Regex" duomenų tikrinimas

    Jei "Excel" programoje "Regex Data Validation" neveikia, greičiausiai taip yra dėl vienos iš šių priežasčių.

    Trūksta funkcijos "RegExpMatch

    Prieš taikydami duomenų tikrinimą, būtinai į sąsiuvinį įterpkite funkcijos RegExpMatch kodą.

    Neteisinga reguliarioji išraiška

    Norėdami įsitikinti, kad regex veikia taip, kaip tikėtasi, galite įvesti RegExpMatch formulę į kurią nors ląstelę ir patikrinti rezultatus. Daugiau informacijos rasite skyriuje "Excel" Reguliariųjų išraiškų atitikimas su pavyzdžiais.

    Reguliariosioms išraiškoms analizuoti ir derinti galite naudotis nemokamomis internetinėmis regex testavimo paslaugomis, pavyzdžiui, RegEx101 arba RegExr.

    Neteisingai pavadinta formulė

    Labai dažna nesėkmingo duomenų patvirtinimo priežastis yra "Regex" pavadinta formulė, nukreipianti į netinkamą ląstelę. Visuose pavyzdžiuose rekomenduojama apibrėžti formulę, nukreipiančią į A1:

    =RegExpMatch(A1, regex)

    Tai veikia tik tada, jei ląstelė A1 yra aktyvus apibrėžiant pavadinimą ir santykinė nuoroda (be ženklo $).

    Esmė ta, kad formulėje nurodyta santykinė nuoroda (A1) automatiškai pasikeis pagal santykinę patvirtinto langelio padėtį. Kitaip tariant, langelis A1 pasirinktas tik dėl patogumo ir nuoseklumo. Iš tikrųjų galite pasirinkti langelį B1 ir daryti nuorodą į B1, pasirinkti langelį C1 ir daryti nuorodą į C1 ir t. t. Svarbiausia yra tai, kad nurodytas langelis turėtų būti aktyvioji ląstelė .

    Jei norite patikrinti, ar jūsų įvardyta formulė yra teisinga, pasirinkite bet kurį darbalapio langelį, atidarykite pavadinimų tvarkytuvę ir pažiūrėkite, į kurį langelį nurodo formulė. Jei formulė nurodo į šiuo metu pasirinktą langelį, formulė yra teisinga. Priešingu atveju turėtumėte pakeisti nuorodą pirmajame argumente.

    Toliau pateiktoje ekrano kopijoje pasirinktas langelis A7, vadinasi, įvardytos formulės pirmasis argumentas turėtų būti A7. Antrasis argumentas ($A$2) nurodo regeksą - ši nuoroda turi išlikti pastovi, todėl ji užrakinta ženklu $.

    Pasirinkta parinktis Ignoruoti tuščią vietą

    Nustatant pasirinktinę duomenų tikrinimo taisyklę, svarbu panaikinti Ignoruoti tuščią langą Priešingu atveju taisyklė neveiks dėl toliau nurodytos priežasties:

    Jei atitikmuo nerandamas, funkcija RegExpMatch grąžina FALSE. Ignoruoti tuščią langą pasirinkta parinktis, FALSE reiškia tuščią langą ir yra ignoruojama.

    Alternatyvus sprendimas - aiškiai nurodyti, kad formulė turėtų grąžinti TRUE:

    =RegExpMatch(...)=TRUE

    Štai kaip atlikti duomenų patvirtinimą "Excel" programoje naudojant reguliarias išraiškas. Dėkoju, kad perskaitėte, ir nekantriai lauksiu jūsų mūsų tinklaraštyje kitą savaitę!

    Atsisiųsti praktikos sąsiuvinį

    "Regex" duomenų patvirtinimo pavyzdžiai (.xlsm failas)

    Michaelas Brownas yra atsidavęs technologijų entuziastas, mėgstantis supaprastinti sudėtingus procesus naudojant programinės įrangos įrankius. Turėdamas daugiau nei dešimtmetį patirtį technologijų pramonėje, jis patobulino savo įgūdžius „Microsoft Excel“ ir „Outlook“, taip pat „Google“ skaičiuoklėse ir dokumentuose. Michaelio tinklaraštis skirtas dalytis savo žiniomis ir patirtimi su kitais, jame pateikiami lengvai įgyvendinami patarimai ir vadovėliai, kaip pagerinti produktyvumą ir efektyvumą. Nesvarbu, ar esate patyręs profesionalas, ar pradedantysis, Michaelo tinklaraštyje rasite vertingų įžvalgų ir praktinių patarimų, kaip išnaudoti visas šių pagrindinių programinės įrangos įrankių galimybes.