Sisällysluettelo
Ohjeessa näytetään, miten tietojen validointi tehdään Excelissä käyttämällä säännöllisiä lausekkeita mukautetun RegexMatch-funktion avulla.
Kun on kyse käyttäjän syötteen rajoittamisesta Excel-taulukoissa, tietojen validointi on välttämätöntä. Haluatko sallia vain numerot tai päivämäärät tietyssä solussa? Tai rajoittaa tekstiarvot tiettyyn pituuteen? Tai ehkä kieltää tietyn alueen ulkopuoliset ajat? Ei ongelmaa, kaikki tämä voidaan tehdä helposti esiasetetuilla tai mukautetuilla validointikriteereillä. Mutta entä jos haluan sallia vain kelvolliset sähköpostiosoitteet tai merkkijonot, jotka vastaavat tiettyä asetusta?Valitettavasti se ei ole mahdollista. Regex, sanoitko? Hmm... se voisi toimia!
Miten tehdä Excel-tietojen validointi Regexin avulla?
Valitettavasti yksikään sisäänrakennetuista Excel-toiminnoista ei tue regexejä, eikä Data Validation ole poikkeus. Jotta voit validoida solujen syötteen säännöllisten lausekkeiden avulla, sinun on ensin luotava mukautettu Regex-funktio. Toinen hankaluus on se, että VBA:n käyttäjän määrittelemiä funktioita ei voi käyttää suoraan Data Validationissa - tarvitset välittäjän nimetyn kaavan muodossa.
Edellä esitetyn perusteella hahmotellaan lyhyesti vaiheet, jotka on toteutettava tietojen validoimiseksi Excelissä regexien avulla:
- Luo mukautettu Regex-funktio, joka tarkistaa, vastaako syöttöarvo säännöllistä lauseketta.
- Määritä nimi Regex-kaavalle.
- Määritä nimettyyn kaavaan perustuva tietojen validointisääntö.
- Kopioi vahvistusasetukset niin moneen soluun kuin haluat.
Kuulostaa hyvältä suunnitelmalta? Yritetään toteuttaa se käytännössä!
Excel-tietojen validointi mukautettujen säännöllisten lausekkeiden avulla
Tämä esimerkki käsittelee hyvin yleistä tapausta - miten sallitaan vain tietyn mallin arvot.
Oletetaan, että säilytät joitakin SKU-koodeja työarkistossasi ja haluat varmistaa, että vain tietyn kuvion mukaiset koodit pääsevät luetteloon. Edellyttäen, että kukin SKU-koodi koostuu kahdesta merkkiryhmästä, jotka on erotettu toisistaan väliviivalla, ja että ensimmäiseen ryhmään kuuluu kolme isoa kirjainta ja toiseen ryhmään kolme numeroa, voit tunnistaa tällaiset arvot alla olevan regexin avulla.
Kuvio : ^[A-Z]{3}-\d{3}$
Huomaa, että merkkijonon alku (^) ja loppu ($) on ankkuroitu, joten soluun ei voi syöttää muita kuin kuvion merkkejä.
1. Lisää mukautettu Regex Match -toiminto
Aloita lisäämällä RegExpMatch-funktio työkirjaasi. Excel-gurumme ovat jo kirjoittaneet koodin, joten sinun tarvitsee vain kopioida se edellä linkitetystä sivusta ja liittää se VBA-editoriin.
Tässä on funktion syntaksi:
RegExpMatch(text, pattern, [match_case])Missä:
- Teksti (pakollinen) - lähdejono (meidän kontekstissamme - validoitu solu).
- Kuvio (pakollinen) - Säännöllinen lauseke, jota vastataan.
- Match_case (valinnainen) - täsmäämistyyppi. TRUE tai jätetty pois - isojen ja pienten kirjainten erottelu; FALSE - isojen ja pienten kirjainten erottelu.
Vihje: Jos olet Ultimate Suite -ohjelmistomme käyttäjä, voit tehdä Regex-tietojen validoinnin Excelissä lisäämättä VBA-koodia työkirjoihisi. Hyödynnä vain Regex-työkaluihin sisältyvää mukautettua AblebitsRegexMatch-funktiota.
2. Luo nimetty kaava
Valitse kohdelaskentataulukkosi solu A1 (riippumatta sen sisällöstä ja siitä, minkä solun aiot oikeastaan vahvistaa), avaa Nimenhallinta painamalla Ctrl + F3 ja määritä tälle kaavalle nimi:
=RegExpMatch(Sheet1!A1, "^[A-Z]{3}-\d{3}$")
Tai voit syöttää regexin johonkin soluun (tässä esimerkissä A2) ja antaa toiseen argumenttiin $A$2:
=RegExpMatch(Sheet1!A1, Sheet1!$A$2)
Jotta kaava toimisi oikein, varmista, että käytät suhteellista viittausta kohdassa teksti argumentti (A1) ja absoluuttinen viittaus kuvio ($A$2).
Koska kaavamme on tarkoitettu SKU-numeroiden vahvistamiseen, nimemme sen sen mukaisesti: Validate_SKU .
Tärkeä huomautus! Kun määrittelet kaavaa, tarkista vielä kerran, että ensimmäinen argumentti viittaa tällä hetkellä valittuun soluun Jos esimerkiksi solu A1 on valittuna arkilla, aseta A1 ensimmäiseksi argumentiksi (suosituksiemme mukaisesti); jos B2 on valittuna, käytä ensimmäisenä argumenttina B2:ta ja niin edelleen. Sillä ei ole väliä, mitä viittausta käytät, kunhan se vastaa valittua solua.
Vaiheittaiset ohjeet ovat kohdassa Nimetyn kaavan tekeminen Excelissä.
3. Määritä tietojen validointi
Valitse ensimmäinen tarkistettava solu (meidän tapauksessamme A5) ja tee nimettyyn kaavaan perustuva mukautettu tietojen validointisääntö. Tee tätä varten seuraavasti:
- Klikkaa Tiedot tab> Tietojen validointi .
- Vuonna Salli avattavasta luettelosta, valitse Custom .
- Kirjoita alla oleva kaava vastaavaan ruutuun.
=Validate_SKU
- Poista valinta Jätä tyhjä huomiotta vaihtoehto, muuten sääntösi ei toimi.
Voit myös kirjoittaa mukautetun virheilmoituksen, joka näytetään, kun soluun syötetään virheellisiä tietoja.
Jos tunnet tarvitsevasi yksityiskohtaiset vaiheet, tässä on lisätietoja: Miten määritetään mukautettu tietojen validointi Excelissä.
4. Kopioi tietojen validointi useampaan soluun
Voit kopioida vahvistusasetukset useampaan soluun seuraavasti:
- Valitse solu, jossa on tietojen vahvistus, ja paina Ctrl + C kopioidaksesi sen.
- Valitse muut solut, jotka haluat vahvistaa, napsauta niitä hiiren kakkospainikkeella, valitse sitten Liitä Special ja valitse Validointi vaihtoehto.
- Klikkaa OK .
Lisätietoja on kohdassa Tietojen validoinnin kopiointi.
Aina kun joku yrittää syöttää virheellisen SKU:n johonkin validoituun kenttään, näkyviin tulee seuraava varoitusviesti:
Sähköpostin validointi Regexillä
Sähköpostin validointi aloitetaan kirjoittamalla säännöllinen lauseke, joka vastaa sähköpostiosoitetta.
Kuvio : ^[\w\.\-]+@[A-Za-z0-9]+[A-Za-z0-9\.\-]*[A-Za-z0-9]+\.[A-Za-z]{2,24}$
Yksityiskohtainen selitys syntaksista on kohdassa Regex kelvollisten sähköpostiosoitteiden tarkistamiseksi.
Määritä nyt validointiperusteet suorittamalla jo tutut vaiheet:
- Kirjoita yllä oleva regex-koodi kohtaan B2.
- Valitse solu A1 ja määritä nimi nimeltä Validate_Email joka viittaa:
=RegExpMatch(Sheet1!A1, Sheet1!$B$2)
- Sovelletaan soluun B5 mukautettua tietojen validointia alla olevan kaavan avulla. On tärkeää, että solun Jätä tyhjä huomiotta vaihtoehdon ei pitäisi olla valittuna.
=Validate_Email
Lisäksi voit määrittää mukautetun virheilmoituksen, jossa käyttäjää kehotetaan syöttämään voimassa oleva sähköpostiosoite.
- Kopioi sääntö alla oleviin soluihin.
Jos validoituun soluun syöttämäsi sähköpostiosoite ei vastaa regex-kuviota, näyttöön tulee seuraava hälytys:
Salasanojen vahvistaminen säännöllisten lausekkeiden avulla
Kun käytät regexiä salasanojen vahvistamiseen, sinun on ensin päätettävä, mitä säännöllisen lausekkeen pitäisi tarkalleen ottaen tarkistaa. Seuraavassa on muutamia esimerkkejä, jotka saattavat johdattaa sinut oikeille raiteille.
Salasanan on oltava vähintään 6 merkkiä pitkä, ja se voi sisältää vain kirjaimia (isoja tai pieniä) ja numeroita:
Kuvio : ^[A-Za-z0-9]{6,}$$
Salasanan on oltava vähintään 6 merkkiä pitkä ja sisällettävä vähintään yksi kirjain ja yksi numero:
Kuvio : ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,}$
Salasanan on oltava vähintään 6 merkkiä pitkä, ja siinä on oltava vähintään yksi iso kirjain, yksi pieni kirjain ja yksi numero:
Kuvio : ^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z\d]{6,}$
Salasanan on oltava vähintään 6 merkkiä pitkä ja sisällettävä vähintään yksi kirjain, yksi numero ja yksi erikoismerkki:
Kuvio : ^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&_-])[A-Za-z\d@$!%*#?&_-]{6,}$
Kun malli on luotu, voit siirtyä tietojen validoinnin määrittämiseen:
- Syötä salasanasi regex-koodi C2:een.
- Valitse solu A1 ja luo nimetty kaava nimeltä Validate_Password :
=RegExpMatch(Sheet1!A1, Sheet1!$C$2)
- Luo soluun C5 mukautettu validointisääntö alla olevalla kaavalla. Muista poistaa valintamerkin Jätä tyhjä huomiotta valintaruutu.
=Validate_Password
- Kopioi sääntö niin moneen soluun kuin haluat.
Nyt voit turvallisesti lisätä uusia salasanoja luetteloon. Jos syötetty merkkijono ei vastaa regexiä, seuraava hälytys muistuttaa sinua siitä, millaisia arvoja hyväksytään:
Regex Data Validation ei toimi
Jos Regex-tietojen validointi ei toimi Excelissäsi, se johtuu todennäköisesti jostain seuraavista syistä.
RegExpMatch-toiminto puuttuu
Ennen kuin sovellat tietojen validointia, muista lisätä RegExpMatch-funktion koodi työkirjaasi.
Virheellinen säännöllinen lauseke
Varmistaaksesi, että regex toimii odotetulla tavalla, voit syöttää RegExpMatch-kaavan johonkin soluun ja tarkastella tuloksia. Lisätietoja on kohdassa Excelin säännöllisen lausekkeen täsmäytys esimerkkeineen.
Voit analysoida ja korjata säännöllisiä lausekkeita käyttämällä ilmaisia regex-testauspalveluita verkossa, kuten RegEx101 tai RegExr.
Väärin nimetty kaava
Hyvin yleinen syy tietojen validoinnin epäonnistumiseen on Regex-niminen kaava, joka viittaa väärään soluun. Kaikissa esimerkeissä suosittelimme määrittelemään kaavan, joka viittaa soluun A1:
=RegExpMatch(A1, regex)
Tämä toimii vain, jos solu A1 on aktiivinen määritettäessä nimeä ja suhteellinen viite (ilman $-merkkiä) käytetään.
Ideana on, että kaavassa määritetty suhteellinen viittaus (A1) muuttuu automaattisesti vahvistetun solun suhteellisen sijainnin perusteella. Toisin sanoen solu A1 valitaan vain mukavuuden ja johdonmukaisuuden vuoksi. Itse asiassa voit valita solun B1 ja viitata soluun B1, valita solun C1 ja viitata soluun C1 ja niin edelleen. Keskeistä on, että viitattu solu olisi oltava aktiivinen solu .
Voit tarkistaa, onko nimetty kaava oikea, valitsemalla minkä tahansa solun työarkistasi, avaamalla Nimenhallinnan ja katsomalla, mihin soluun kaava viittaa. Jos kaava viittaa juuri valittuun soluun, kaava on oikea. Muussa tapauksessa sinun on muutettava viittausta ensimmäisessä argumentissa.
Alla olevassa kuvakaappauksessa solu A7 on valittu, mikä tarkoittaa, että nimetyn kaavan ensimmäisessä argumentissa pitäisi olla A7. Toinen argumentti ($A$2) viittaa regexiin - tämän viittauksen on tarkoitus pysyä vakiona, joten se on lukittu $-merkillä.
Ignore blank -vaihtoehto valittu
Kun määrität mukautettua tietojen validointisääntöä, on tärkeää poistaa valintamerkki Jätä tyhjä huomiotta Muuten sääntö ei toimi seuraavasta syystä:
Jos vastaavuutta ei löydy, RegExpMatch-funktio palauttaa arvon FALSE. Jätä tyhjä huomiotta valittuna, FALSE vastaa tyhjää ja sitä ei oteta huomioon.
Vaihtoehtoinen ratkaisu on ilmoittaa nimenomaisesti, että kaavan pitäisi palauttaa TRUE:
=RegExpMatch(...)=TRUE
Näin teet tietojen validoinnin Excelissä käyttämällä säännöllisiä lausekkeita. Kiitän sinua lukemisesta ja odotan innolla, että tapaamme blogissamme ensi viikolla!
Käytännön työkirja ladattavissa
Esimerkkejä Regex-tietojen validoinnista (.xlsm-tiedosto)