Преглед садржаја
Водич показује како да извршите проверу ваљаности података у Екцел-у користећи регуларне изразе уз помоћ прилагођене функције РегекМатцх.
Када је у питању ограничавање корисничког уноса у Екцел радним листовима, Валидација података је неопходан. Желите да дозволите само бројеве или датуме у датој ћелији? Или ограничити текстуалне вредности на одређену дужину? Или можда забранити времена изван датог опсега? Нема проблема, све се ово може лако урадити са унапред подешеним или прилагођеним критеријумима валидације. Али шта ако желим да дозволим само важеће адресе е-поште или низове који одговарају одређеном шаблону? Авај, то није могуће. Регек кажеш? Хмм… то би могло да упали!
Како да извршите проверу ваљаности података у Екцел-у помоћу Регек-а
Нажалост, ниједна од уграђених функција Екцел-а не подржава регуларне изразе, а валидација података није изузетак. Да бисте могли да потврдите унос ћелије помоћу регуларних израза, прво морате да креирате прилагођену функцију Регек. Још једна компликација је то што ВБА кориснички дефинисане функције не могу да се сервирају директно за Валидацију података – биће вам потребан посредник у облику именоване формуле.
С обзиром на горе наведено, дозволите нам да укратко опишемо кораке које треба предузети за валидацију података у Екцел-у помоћу регуларних израза:
- Креирајте прилагођену функцију регуларног израза која проверава да ли се улазна вредност поклапа са регуларним изразом.
- Дефинишите име за формулу регуларног израза.
- Конфигуришите правило за проверу ваљаности података на основу именоване формуле.
- Копирајтеподешавања валидације на онолико ћелија колико желите.
Звучи као план? Хајде да покушамо да то применимо у пракси!
Провера ваљаности Екцел података коришћењем прилагођених регуларних израза
Овај пример се бави веома честим случајем – како дозволити само вредности одређеног обрасца.
Претпоставимо да држите неке СКУ кодове у свом радном листу и желите да будете сигурни да само кодови који одговарају датом обрасцу доспеју на листу. Под условом да се сваки СКУ састоји од 2 групе знакова раздвојених цртицом, прва група укључује 3 велика слова, а друга група - 3 цифре, можете идентификовати такве вредности користећи доњи регуларни израз.
Образац : ^[А-З]{3}-\д{3}$
Имајте на уму да су почетак (^) и крај ($) стринга усидрени, тако да нема других знакова осим у образац се може унети у ћелију.
1. Додајте прилагођену функцију Регек Матцх
Почните са уметањем функције РегЕкпМатцх у вашу радну свеску. Код су већ написали наши Екцел гуруи, тако да само треба да га копирате са горе повезане странице и налепите у свој ВБА едитор.
Ево синтаксе функције за вашу референцу:
РегЕкпМатцх(текст , образац, [матцх_цасе])Где:
- Текст (обавезно) - изворни стринг (у нашем контексту - потврђена ћелија).
- Образац (обавезно) - регуларни израз за подударање.
- Матцх_цасе (опционо) - тип подударања. ТАЧНО или изостављено - велика и мала словаосетљива; ФАЛСЕ – не разликује велика и мала слова.
Савет. Ако сте корисник нашег Ултимате Суите-а, онда можете да урадите валидацију података Регек у Екцел-у без додавања ВБА кода у своје радне свеске. Само искористите прилагођену функцију АблебитсРегекМатцх укључену у наше Регек алате.
2. Креирајте именовану формулу
У циљном радном листу изаберите ћелију А1 (без обзира на њен садржај и без обзира коју ћелију заправо желите да потврдите), притисните Цтрл + Ф3 да бисте отворили Менаџер имена и дефинишите име за ову формулу:
=RegExpMatch(Sheet1!A1, "^[A-Z]{3}-\d{3}$")
Или можете да унесете регуларни израз у неку ћелију (А2 у овом примеру) и унесете $А$2 другом аргументу:
=RegExpMatch(Sheet1!A1, Sheet1!$A$2)
Да би формула радила исправно, обавезно користите релативну референцу за аргумент текст (А1) и апсолутну референцу за образац ($А$2).
С обзиром на то да је наша формула намењена за валидацију СКУ бројева, дајемо јој назив: Валидате_СКУ .
Важна напомена! Када дефинишете формулу, двапут проверите да ли се први аргумент односи на тренутно изабрану ћелију , иначе формула неће радити. На пример, ако је ћелија А1 изабрана на листу, ставите А1 у први аргумент (према нашим препорукама); ако је изабрано Б2, онда користите Б2 за први аргумент, и тако један. Није битно коју референцу користите све док се подудара са тренутно изабраном ћелијом.
За корак по коракупутства, погледајте Како направити именовану формулу у Екцел-у.
3. Подесите проверу ваљаности података
Изаберите прву ћелију за проверу (А5 у нашем случају) и направите прилагођено правило за проверу ваљаности података на основу именоване формуле. За ово урадите следеће:
- Кликните на картицу Подаци &гт; Провера ваљаности података .
- У Дозволи на падајућој листи, изаберите Прилагођено .
- Унесите формулу испод у одговарајуће поље.
=Validate_SKU
- Опозовите избор опције Занемари празно , иначе ваше правило неће функционисати.
Опционално, можете да откуцате прилагођена порука о грешци која се приказује када се у ћелију унесу неважећи подаци.
Ако сматрате да су вам потребни детаљни кораци, ево: Како да подесите прилагођену проверу ваљаности података у Екцел-у.
4. Копирај проверу ваљаности података у више ћелија
Да бисте копирали подешавања валидације у више ћелија, ово треба да урадите:
- Изаберите ћелију са провером података и притисните Цтрл + Ц да копирајте га.
- Изаберите друге ћелије које желите да потврдите, кликните десним тастером миша на њих, кликните на Специјално налепи и изаберите опцију Провера .
- Кликните на ОК .
Више информација можете пронаћи у Како копирати валидацију података.
Сада, сваки пут када неко покуша да унесе неважећи СКУ у било коју од потврђених ћелија, следеће појавиће се порука упозорења:
Провера ваљаности е-поште помоћу Регек-а
Да бисте извршили проверу ваљаности е-поште, почињетеса писањем регуларног израза који одговара адреси е-поште.
Образац : ^[\в\.\-]+@[А-За-з0-9]+[А-За -з0-9\.\-]*[А-За-з0-9]+\.[А-За-з]{2,24}$
За детаљно објашњење синтаксе, молимо вас да добијете детаљније објашњење синтаксе. погледајте Регек за подударање са важећим адресама е-поште.
А сада, наведите критеријуме валидације тако што ћете извршити већ познате кораке:
- Унесите горњи регуларни израз у Б2.
- Изаберите ћелију А1 и дефинишите име под називом Валидате_Емаил које се односи на:
=RegExpMatch(Sheet1!A1, Sheet1!$B$2)
- За ћелију Б5, примените прилагођену проверу ваљаности података користећи формулу испод. Неопходно је поништити избор опције Игноре бланк .
=Validate_Email
Поред тога, можете да конфигуришете прилагођену поруку о грешци која тражи од корисника да унесе исправну адресу е-поште.
- Копирајте правило у ћелије испод.
Ако адреса е-поште коју унесете у потврђену ћелију не одговара шаблону регуларног израза, следеће упозорење ће искачући прозор:
Провера лозинки помоћу регуларних израза
Када користите регуларни израз за проверу лозинке, прва ствар коју треба да одлучите је шта тачно ваш регуларни израз треба да провери. Ево неколико примера који би вас могли поставити на прави пут.
Лозинка мора да има најмање 6 знакова и може да садржи само слова (велика или мала) и цифре:
Образац : ^[А-За-з0-9]{6,}$
Лозинка мора да има најмање 6 знакова и да садржи најмање једно слово иједна цифра:
Образац : ^(?=.*[А-За-з])(?=.*\д)[А-За-з\д]{6 ,}$
Лозинка мора да има најмање 6 знакова и да садржи најмање једно велико слово, једно мало слово и једну цифру:
Образац : ^(?= .*[А-З])(?=.*[а-з])(?=.*\д)[А-За-з\д]{6,}$
Лозинка мора да има најмање 6 знакова дугачак и укључује најмање једно слово, једну цифру и један специјални знак:
Образац : ^(?=.*[А-За-з])(?=.*\д )(?=.*[@$!%*#?&амп;_-])[А-За-з\д@$!%*#?&амп;_-]{6,}$
Када је шаблон успостављен, можете да пређете на подешавање Валидације података:
- Унесите свој регуларни израз лозинке у Ц2.
- Изаберите ћелију А1 и креирајте именовану формулу под називом Валидате_Пассворд :
=RegExpMatch(Sheet1!A1, Sheet1!$C$2)
- За ћелију Ц5, креирајте прилагођено правило валидације са формулом испод. Не заборавите да поништите избор у пољу за потврду Занемари празно .
=Validate_Password
- Копирајте правило у онолико ћелија колико желите.
Сада можете безбедно да додајете нове лозинке на листу. Ако се уносни низ не подудара са регуларним изразом, следеће упозорење ће вас подсетити које врсте вредности су прихваћене:
Провера података редовног израза не ради
Ако валидација података редовног израза не ради у вашем Екцел-у , највероватније је то због једног од следећих разлога.
Недостаје функција РегЕкпМатцх
Пре него што примените проверу ваљаности података, обавезно убаците код функције РегЕкпМатцх у своју радну свеску.
Нетачно редовноизраз
Да бисте били сигурни да ваш регуларни израз ради како се очекује, можете унети формулу РегЕкпМатцх у неку ћелију и испитати резултате. За више информација погледајте Упаривање Екцел регуларних израза са примерима.
Да бисте анализирали и отклонили грешке у регуларним изразима, можете да користите бесплатне услуге тестирања регуларних израза на мрежи као што су РегЕк101 или РегЕкр.
Погрешно именована формула
Веома чест разлог неуспеха валидације података је формула под називом Регек која се односи на погрешну ћелију. У свим примерима, препоручили смо да дефинишете формулу која се односи на А1:
=RegExpMatch(A1, regex)
Ово функционише само ако је ћелија А1 активна када се дефинише име и <15 Користи се>релативна референца (без знака $).
Идеја је да ће се релативна референца наведена у формули (А1) аутоматски променити на основу релативне позиције потврђене ћелије. Другим речима, ћелија А1 је изабрана само због погодности и доследности. У ствари, можете изабрати ћелију Б1 и позивати се на Б1, изабрати ћелију Ц1 и позивати се на Ц1, итд. Кључна ствар је да референцирана ћелија треба да буде активна ћелија .
Да бисте проверили да ли је ваша именована формула тачна, изаберите било коју ћелију на радном листу, отворите Наме Манагер и видите на коју ћелију формула показује. Ако се односи на тренутно изабрану ћелију, формула је исправна. У супротном, требало би да промените референцу у првом аргументу.
На снимку екранаиспод, изабрана је ћелија А7, што значи да именована формула треба да има А7 у првом аргументу. Други аргумент ($А$2) се односи на регуларни израз - ова референца треба да остане константна, тако да је закључана знаком $.
Игнориши празну опцију изабрана
Када постављате прилагођено правило за проверу ваљаности података, важно је да поништите избор у пољу за потврду Занемари празно . У супротном, правило неће функционисати из следећег разлога:
Ако подударање није пронађено, функција РегЕкпМатцх враћа ФАЛСЕ. Са изабраном опцијом Игноре бланк , ФАЛСЕ је једнако празно и занемарује се.
Алтернативно решење експлицитно наводи да формула треба да врати ТРУЕ:
=RegExpMatch(…)=TRUE
Тако се врши провера ваљаности података у Екцел-у користећи регуларне изразе. Захваљујем вам што сте читали и радујем се што ћу вас видети на нашем блогу следеће недеље!
Вежбање за преузимање
Примери валидације података регуларног израза (.клсм датотека)