Excel adatérvényesítés szabályos kifejezésekkel (Regex)

  • Ossza Meg Ezt
Michael Brown

A bemutató azt mutatja be, hogyan végezhetünk adatérvényesítést az Excelben szabályos kifejezésekkel egy egyéni RegexMatch függvény segítségével.

Amikor a felhasználói bevitel korlátozásáról van szó az Excel munkalapokban, az adatérvényesítés nélkülözhetetlen. Csak számokat vagy dátumokat szeretne engedélyezni egy adott cellában? Vagy a szöveges értékeket egy adott hosszúságra korlátozni? Vagy esetleg letiltani egy adott tartományon kívüli időpontokat? Nem probléma, mindez könnyen elvégezhető az előre beállított vagy egyéni érvényesítési kritériumokkal. De mi van akkor, ha csak érvényes e-mail címeket vagy egy adott tartománynak megfelelő karakterláncokat szeretnék engedélyezni?Sajnos, ez nem lehetséges. Regexet mondasz? Hmm... ez működhet!

    Hogyan kell elvégezni az Excel adatérvényesítést a Regex-szel?

    Sajnálatos módon az Excel beépített funkciói közül egyik sem támogatja a regexeket, és ez alól az Adatérvényesítés sem kivétel. Ahhoz, hogy a cellák bevitelét szabályos kifejezésekkel érvényesíthesse, először egy egyéni Regex függvényt kell létrehoznia. További bonyodalom, hogy a VBA felhasználó által definiált függvények nem szolgálhatók ki közvetlenül az Adatérvényesítésnek - szükség van egy közvetítőre egy megnevezett képlet formájában.

    A fentieket figyelembe véve röviden vázoljuk fel a lépéseket, amelyeket az adatok Excelben történő érvényesítéséhez a regexek használatával kell elvégezni:

    1. Hozzon létre egy egyéni Regex függvényt, amely ellenőrzi, hogy egy bemeneti érték megfelel-e egy reguláris kifejezésnek.
    2. Adjon nevet a Regex-képletnek.
    3. Állítson be egy adatérvényesítési szabályt a megnevezett képlet alapján.
    4. Másolja az érvényesítési beállításokat annyi cellába, ahányat csak akar.

    Úgy hangzik, mint egy terv? Próbáljuk meg megvalósítani a gyakorlatban!

    Excel-adatérvényesítés egyéni szabályos kifejezések használatával

    Ez a példa egy nagyon gyakori esetet tárgyal - hogyan engedélyezhetjük csak egy adott minta értékeit.

    Tegyük fel, hogy a munkalapon SKU kódokat tárol, és biztos akar lenni abban, hogy csak az adott mintának megfelelő kódok kerülnek a listába. Feltéve, hogy minden SKU 2 karaktercsoportból áll, amelyeket kötőjel választ el, az első csoport 3 nagybetűt tartalmaz, a második csoport pedig 3 számjegyet, az alábbi regex segítségével azonosíthatja az ilyen értékeket.

    Mintázat : ^[A-Z]{3}-\d{3}$

    Vegye figyelembe, hogy a karakterlánc eleje (^) és vége ($) le van horgonyozva, így a mintán kívül más karaktert nem lehet beírni egy cellába.

    1. Egyéni Regex Match funkció hozzáadása

    Kezdje a RegExpMatch függvény beillesztésével a munkafüzetébe. A kódot már megírták Excel-gurunk, így csak ki kell másolnia a fent hivatkozott oldalról, és be kell illesztenie a VBA-szerkesztőjébe.

    Itt van a funkció szintaxisa az Ön számára:

    RegExpMatch(text, pattern, [match_case])

    Hol:

    • Szöveg (kötelező) - egy forrás karakterlánc (a mi kontextusunkban - egy hitelesített cella).
    • Mintázat (kötelező) - egyezni kívánt reguláris kifejezés.
    • Match_case (opcionális) - az egyezés típusa. TRUE vagy elhagyva - nagy- és kisbetű-érzékeny; FALSE - nagy- és kisbetű-érzéketlen.

    Tipp: Ha Ön az Ultimate Suite szolgáltatásunk felhasználója, akkor a Regex-adatok érvényesítését elvégezheti Excelben anélkül, hogy VBA-kódot kellene hozzáadnia a munkafüzetekhez. Csak használja ki a Regex eszközökhöz tartozó egyéni AblebitsRegexMatch függvényt.

    2. Hozzon létre egy nevesített képletet

    A célmunkalapon jelölje ki az A1-es cellát (függetlenül annak tartalmától és attól, hogy melyik cellát kívánja érvényesíteni), nyomja meg a Ctrl + F3 billentyűkombinációt a Névkezelő megnyitásához, és adjon nevet ennek a képletnek:

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

    Vagy beírhatja a regexet egy cellába (ebben a példában A2), és megadhatja az $A$2-t a második argumentumnak:

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

    Ahhoz, hogy a képlet helyesen működjön, ügyeljünk arra, hogy a relatív hivatkozást használjuk a szöveg érv (A1) és az abszolút hivatkozás a minta ($A$2).

    Mivel a képletünk a SKU számok érvényesítésére szolgál, ennek megfelelően nevezzük el: Validate_SKU .

    Fontos megjegyzés! A képlet definiálásakor kérjük, ellenőrizze, hogy a az első argumentum az aktuálisan kiválasztott cellára utal , különben a képlet nem fog működni. Például, ha a lapon az A1 cella van kijelölve, akkor az első argumentumba A1-et tegye (az ajánlásaink szerint); ha B2 van kijelölve, akkor B2-t használja az első argumentumként, és így tovább. Nem igazán számít, hogy milyen konkrét hivatkozást használ, amíg az megfelel az éppen kiválasztott cellának.

    Lépésről lépésre történő útmutatásért lásd: Hogyan készítsünk névvel ellátott képletet az Excelben.

    3. Adatok érvényesítésének beállítása

    Jelölje ki az első ellenőrizendő cellát (esetünkben az A5-öt), és készítsen egyéni adatérvényesítési szabályt a megnevezett képlet alapján. Ehhez tegye a következőket:

    1. Kattintson a címre. Adatok tab> Adatérvényesítés .
    2. A Engedélyezze a legördülő listából válassza ki a Custom .
    3. Írja be az alábbi képletet a megfelelő mezőbe.

      =Validate_SKU

    4. Válaszd ki a Figyelmen kívül hagyni üres opciót, különben a szabály nem fog működni.

    Opcionálisan beírhat egy egyéni hibaüzenetet, amely akkor jelenik meg, ha egy cellába érvénytelen adatot írnak be.

    Ha úgy érzi, hogy szüksége van a részletes lépésekre, akkor tessék: Egyéni adatérvényesítés beállítása Excelben.

    4. Adatérvényesítés másolása több cellára

    Az érvényesítési beállítások több cellára történő másolásához a következőket kell tennie:

    1. Jelölje ki az adatérvényesítéssel rendelkező cellát, és nyomja meg a Ctrl + C billentyűkombinációt a másoláshoz.
    2. Jelölje ki az érvényesítendő cellákat, kattintson rájuk a jobb gombbal, majd kattintson a Beillesztés Special , és válassza a Érvényesítés opció.
    3. Kattintson a címre. OK .

    További információ az Adatérvényesítés másolása című fejezetben található.

    Mostantól minden alkalommal, amikor valaki érvénytelen SKU-t próbál beírni az érvényesített cellák bármelyikébe, a következő figyelmeztető üzenet jelenik meg:

    Email érvényesítés Regex-szel

    Az e-mail érvényesítés elvégzéséhez először is írjon egy olyan reguláris kifejezést, amely megfelel egy e-mail címnek.

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

    A szintaxis részletes magyarázatát lásd a Regex az érvényes e-mail címek megfeleltetésére.

    Most pedig adja meg az érvényesítési feltételeket a már ismert lépések végrehajtásával:

    1. Írja be a fenti regexet a B2-be.
    2. Jelölje ki az A1 cellát, és adjon meg egy nevet Validate_Email amely a következőkre utal:

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

    3. A B5 cellára alkalmazza az egyéni adatérvényesítést az alábbi képlet segítségével. Fontos, hogy a Figyelmen kívül hagyni üres opciót nem kell kiválasztani.

      =Validate_Email

      Ezenkívül beállíthat egy egyéni hibaüzenetet, amely arra kéri a felhasználót, hogy adjon meg egy érvényes e-mail címet.

    4. Másolja a szabályt az alábbi cellákba.

    Ha az érvényesített cellába beírt e-mail cím nem felel meg a regex mintának, a következő figyelmeztetés jelenik meg:

    Jelszavak hitelesítése reguláris kifejezésekkel

    Ha regexet használ jelszó érvényesítésére, először is el kell döntenie, hogy pontosan mit is ellenőrizzen a reguláris kifejezés. Íme néhány példa, amely talán a helyes útra tereli.

    A jelszónak legalább 6 karakter hosszúnak kell lennie, és csak betűket (nagy- vagy kisbetűket) és számjegyeket tartalmazhat:

    Mintázat : ^[A-Za-z0-9]{6,}$

    A jelszónak legalább 6 karakter hosszúnak kell lennie, és legalább egy betűt és egy számjegyet kell tartalmaznia:

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

    A jelszónak legalább 6 karakter hosszúnak kell lennie, és legalább egy nagybetűt, egy kisbetűt és egy számjegyet kell tartalmaznia:

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

    A jelszónak legalább 6 karakter hosszúnak kell lennie, és legalább egy betűt, egy számjegyet és egy speciális karaktert kell tartalmaznia:

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

    A minta létrehozásával továbbléphet az adatérvényesítés beállításához:

    1. Adja meg a jelszó regexét a C2-ben.
    2. Jelölje ki az A1 cellát, és hozzon létre egy névre szóló képletet Validate_Password :

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

    3. A C5 cellához hozzon létre egy egyéni érvényesítési szabályt az alábbi képlettel. Ne feledje, hogy törölje a jelölést a Figyelmen kívül hagyni üres jelölőnégyzet.

      =Validate_Password

    4. Másolja a szabályt annyi cellába, ahányat csak akar.

    Most már nyugodtan hozzáadhat új jelszavakat a listához. Ha egy bemeneti karakterlánc nem felel meg a regexnek, a következő figyelmeztetés emlékeztet arra, hogy milyen értékek fogadhatók el:

    Regex Data Validation nem működik

    Ha a Regex adatérvényesítés nem működik az Excelben, valószínűleg a következő okok valamelyike miatt.

    RegExpMatch funkció hiányzik

    Az adatérvényesítés alkalmazása előtt mindenképpen illessze be a RegExpMatch függvény kódját a munkafüzetbe.

    Helytelen reguláris kifejezés

    Hogy megbizonyosodjon arról, hogy a regex a várt módon működik, beírhat egy RegExpMatch képletet valamelyik cellába, és megvizsgálhatja az eredményeket. További információért lásd: Excel szabályos kifejezések illesztése példákkal.

    A reguláris kifejezések elemzéséhez és hibakereséséhez olyan ingyenes online regex tesztelési szolgáltatásokat használhat, mint a RegEx101 vagy a RegExr.

    Rossz nevű képlet

    Az adatérvényesítés hibájának nagyon gyakori oka, hogy a Regex nevű formula rossz cellára hivatkozik. Minden példában ajánlott az A1-re hivatkozó képletet definiálni:

    =RegExpMatch(A1, regex)

    Ez csak akkor működik, ha a cella A1 aktív amikor egy nevet és egy relatív referencia (a $ jel nélkül) van használva.

    Az ötlet az, hogy a képletben megadott relatív hivatkozás (A1) automatikusan változik az érvényesített cella relatív pozíciója alapján. Más szóval, az A1-es cellát csak a kényelem és a következetesség miatt választjuk ki. Valójában kijelölhetjük a B1-es cellát és hivatkozhatunk B1-re, kijelölhetjük a C1-es cellát és hivatkozhatunk C1-re, és így tovább. A lényeg az, hogy a(z) hivatkozott cella legyen a aktív cella .

    Ha ellenőrizni szeretné, hogy a megnevezett képlet helyes-e, jelölje ki a munkalap bármelyik celláját, nyissa meg a Névkezelőt, és nézze meg, hogy a képlet melyik cellára mutat. Ha az aktuálisan kiválasztott cellára utal, akkor a képlet helyes. Ellenkező esetben meg kell változtatnia az első argumentumban szereplő hivatkozást.

    Az alábbi képernyőképen az A7-es cella van kijelölve, ami azt jelenti, hogy a névvel ellátott képlet első argumentumának A7-nek kell lennie. A második argumentum ($A$2) a regexre utal - ennek a hivatkozásnak állandónak kell maradnia, ezért a $ jellel van lezárva.

    Ignore blank opció kiválasztva

    Egyéni adatérvényesítési szabály beállításakor fontos, hogy törölje a jelölést a Figyelmen kívül hagyni üres Ellenkező esetben a szabály a következő okból nem fog működni:

    Ha nem talál egyezést, a RegExpMatch függvény FALSE-t ad vissza. A RegExpMatch függvény a Figyelmen kívül hagyni üres opciót választotta, a FALSE üresnek felel meg, és figyelmen kívül hagyjuk.

    Egy alternatív megoldás az, ha kifejezetten kijelentjük, hogy a képletnek TRUE-t kell visszaadnia:

    =RegExpMatch(...)=TRUE

    Ez az, hogyan kell elvégezni az adatérvényesítést az Excelben a reguláris kifejezések használatával. Köszönöm, hogy elolvastad, és várom, hogy találkozzunk a blogunkon a jövő héten!

    Gyakorlati munkafüzet letölthető

    Regex adatérvényesítési példák (.xlsm fájl)

    Michael Brown elkötelezett technológiai rajongó, aki szenvedélyesen egyszerűsíti a bonyolult folyamatokat szoftvereszközök segítségével. A technológiai iparban szerzett több mint egy évtizedes tapasztalatával a Microsoft Excel és az Outlook, valamint a Google Táblázatok és a Dokumentumok területén fejlesztette tudását. Michael blogja célja, hogy megossza tudását és szakértelmét másokkal, könnyen követhető tippeket és oktatóanyagokat adva a termelékenység és a hatékonyság javításához. Akár tapasztalt szakember, akár kezdő, Michael blogja értékes betekintést és gyakorlati tanácsokat kínál, amelyek segítségével a legtöbbet hozhatja ki ezekből az alapvető szoftvereszközökből.