Валидација на податоци во Excel со користење на регуларни изрази (Regex)

  • Споделете Го Ова
Michael Brown

Упатството покажува како да се направи валидација на податоци во Excel користејќи регуларни изрази со помош на приспособена функција RegexMatch.

Кога станува збор за ограничување на внесувањето на корисникот во работните листови на Excel, валидација на податоци е незаменлив. Сакате да дозволите само броеви или датуми во дадена ќелија? Или ограничување на текстуалните вредности на одредена должина? Или можеби не дозволувајте времиња надвор од даден опсег? Нема проблем, сето ова може лесно да се направи со претходно поставени или сопствени критериуми за валидација. Но, што ако сакам да дозволам само валидни адреси на е-пошта или низи што одговараат на одредена шема? За жал, тоа не е можно. Регекс велиш? Хм... тоа може да функционира!

    Како да направите валидација на податоци во Excel со Regex

    За жал, ниту една од вградените функции на Excel не поддржува регекси, а валидацијата на податоци не е исклучок. За да можете да го потврдите внесувањето на ќелијата користејќи редовни изрази, прво треба да креирате приспособена функција Regex. Друга компликација е тоа што функциите дефинирани од корисникот VBA не можат директно да се сервираат на валидација на податоци - ќе ви треба посредник во форма на именувана формула.

    Со оглед на горенаведеното, дозволете ни накратко да ги наведеме чекорите што треба да се преземат за да ги потврдите податоците во Excel користејќи регекси:

    1. Креирајте приспособена функција Регекс што проверува дали влезната вредност се совпаѓа со регуларен израз.
    2. Дефинирајте име за вашата формула Регекс.
    3. Конфигурирајте правило за валидација на податоци врз основа на именуваната формула.
    4. Копирајте гопоставки за валидација на онолку ќелии колку што сакате.

    Звучи како план? Ајде да се обидеме да го имплементираме во пракса!

    Потврда на податоци на Excel со користење на сопствени регуларни изрази

    Овој пример се однесува на многу вообичаен случај - како да се дозволат само вредностите на одредена шема.

    0>Да претпоставиме дека чувате некои SKU-кодови во вашиот работен лист и сакате да бидете сигурни дека само шифрите што одговараат на дадена шема влегуваат во списокот. Под услов секој SKU да се состои од 2 групи знаци одделени со цртичка, првата група вклучува 3 големи букви и втората група - 3 цифри, можете да ги идентификувате таквите вредности користејќи го долунаведениот регекс.

    Шема : ^[A-Z]{3}-\d{3}$

    Забележете дека почетокот (^) и крајот ($) на низата се закотвени, така што нема други знаци освен во шема може да се внесе во ќелија.

    1. Додадете приспособена функција Regex Match

    Започнете со вметнување на функцијата RegExpMatch во вашата работна книга. Кодот е веќе напишан од нашите гуруа на Excel, така што само треба да го копирате од горе-поврзаната страница и да го залепите во вашиот VBA уредник.

    Еве ја синтаксата на функцијата за ваша референца:

    RegExpMatch(текст , шема, [совпаѓање_случај])

    Каде:

    • Текст (задолжително) - изворна низа (во нашиот контекст - потврдена ќелија).
    • Шама (задолжително) - регуларен израз за совпаѓање.
    • Соклопување_случај (изборно) - тип на совпаѓање. ТОЧНО или испуштено - случај-чувствителен; НЕТОЧНО - не се осетливи на букви.

    Совет. Ако сте корисник на нашиот Ultimate Suite, тогаш можете да направите валидација на податоци Regex во Excel без да додавате никаков VBA код во вашите работни книги. Само искористете ја приспособената функција AblebitsRegexMatch вклучена во нашите Regex Алатки.

    2. Направете именувана формула

    Во вашиот целен работен лист, изберете ја ќелијата A1 (без оглед на нејзината содржина и без разлика која ќелија всушност ќе ја потврдите), притиснете Ctrl + F3 за да го отворите Управникот со имиња и дефинирајте име за оваа формула:

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

    Или можете да го внесете регексот во некоја ќелија (A2 во овој пример) и да внесете $A$2 на вториот аргумент:

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

    За формулата да работи правилно, не заборавајте да користите релативна референца за аргументот текст (A1) и апсолутна референца за шаблон ($A$2).

    Со оглед на тоа што нашата формула е наменета за валидација на броевите на SKU, соодветно ја именуваме: Validate_SKU .

    Важна забелешка! Кога ја дефинирате формулата, ве молиме двапати проверете дали првиот аргумент се однесува на моментално избраната ќелија , инаку формулата нема да работи. На пример, ако ќелијата A1 е избрана на листот, ставете A1 во првиот аргумент (според нашите препораки); ако е избран B2, тогаш користете B2 за првиот аргумент, и така еден. Не е навистина важно која конкретна референца ја користите сè додека се совпаѓа со моментално избраната ќелија.

    За чекор по чекоринструкции, погледнете Како да направите именувана формула во Excel.

    3. Поставете валидација на податоци

    Изберете ја првата ќелија што треба да се провери (А5 во нашиот случај) и направете приспособено правило за валидација на податоците врз основа на именуваната формула. За ова, направете го следново:

    1. Кликнете на картичката Податоци > Потврда на податоци .
    2. Во Дозволи паѓачката листа, изберете Прилагодено .
    3. Внесете ја формулата подолу во соодветното поле.

      =Validate_SKU

    4. Отпишете ја опцијата Игнорирај празно , инаку вашето правило нема да работи.

    Изборно, можете да напишете приспособена порака за грешка што ќе се прикаже кога ќе се внесат неважечки податоци во ќелија.

    Ако сметате дека ви се потребни деталните чекори, еве одете: Како да поставите приспособена валидација на податоци во Excel.

    4. Копирај валидација на податоци во повеќе ќелии

    За да ги копирате поставките за валидација на повеќе ќелии, ова е она што треба да го направите:

    1. Изберете ја ќелијата со валидација на податоци и притиснете Ctrl + C за да копирајте го.
    2. Изберете други ќелии што сакате да ги потврдите, кликнете со десното копче на нив, кликнете Залепете специјално и изберете ја опцијата Валидација .
    3. Кликнете OK .

    Повеќе информации може да најдете во Како да се копира валидација на податоци.

    Сега, секој пат кога некој ќе се обиде да внесе неважечки SKU во која било од потврдените ќелии, следново ќе се појави предупредувачка порака:

    Потврда на е-пошта со Regex

    За да извршите валидација на е-пошта, започнуватесо пишување регуларен израз што се совпаѓа со адреса на е-пошта.

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

    За детално објаснување на синтаксата, ве молиме видете Regex за да одговара на важечките адреси на е-пошта.

    И сега, наведете ги критериумите за валидација со извршување на веќе познатите чекори:

    1. Внесете го горниот регекс во B2.
    2. Изберете клетка A1 и дефинирајте име наречено Validate_Email што се однесува на:

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

    3. За ќелијата B5, примени приспособена валидација на податоци користејќи ја формулата подолу. Од суштинско значење е опцијата Игнорирај празно да биде отселектирана.

      =Validate_Email

      Дополнително, можете да конфигурирате приспособена порака за грешка која го поттикнува корисникот да внесе валидна адреса за е-пошта.

    4. Копирајте го правилото во ќелиите подолу.

    Ако адресата на е-пошта што ја внесувате во потврдена ќелија не се совпаѓа со регекс шема, следното предупредување ќе pop-up:

    Потврдување на лозинки со користење на регуларни изрази

    Кога користите regex за валидација на лозинката, првото нешто што треба да одлучите е што точно треба да провери вашиот редовен израз. Еве неколку примери кои би можеле да ве постават на вистинскиот пат.

    Лозинката мора да биде долга најмалку 6 знаци и може да содржи само букви (големи или мали) и цифри:

    Шема : ^[A-Za-z0-9]{6,}$

    Лозинката мора да биде долга минимум 6 знаци и да содржи најмалку една буква иедна цифра:

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

    Лозинката мора да има минимум 6 знаци и да содржи најмалку една голема буква, една мала буква и една цифра:

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

    Лозинката мора да има минимум 6 знаци долга и вклучува најмалку една буква, една цифра и еден посебен знак:

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

    Со воспоставениот шаблон, можете да продолжите со поставување на валидација на податоци:

    1. Внесете го вашиот регекс на лозинката во C2.
    2. Изберете ја ќелијата A1 и креирајте именувана формула наречена Validate_Password :

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

    3. За ќелијата C5, креирајте приспособено правило за валидација со формулата подолу. Не заборавајте да го отселектирате полето за избор Игнорирај празно .

      =Validate_Password

    4. Копирајте го правилото во онолку ќелии колку што сакате.

    Сега, можете безбедно да додавате нови лозинки на списокот. Ако влезната низа не се совпаѓа со регексот, следното предупредување ќе ве потсети какви видови вредности се прифаќаат:

    Потврдата на податоците на Регекс не работи

    Ако валидацијата на податоци Регекс не работи во вашиот Excel , најверојатно тоа е поради една од следните причини.

    Недостасува функцијата RegExpMatch

    Пред да ја примените валидацијата на податоци, погрижете се да го вметнете кодот на функцијата RegExpMatch во вашата работна книга.

    12>Неправилно редовноизраз

    За да бидете сигурни дека вашиот регекс работи како што се очекува, можете да внесете формула RegExpMatch во некоја ќелија и да ги испитате резултатите. За повеќе информации, погледнете во Excel Редовни изрази што се совпаѓаат со примери.

    За да ги анализирате и дебагирате вашите редовни изрази, можете да користите бесплатни онлајн услуги за тестирање регекс како што се RegEx101 или RegExr.

    Погрешно именувана формула

    Многу честа причина за неуспехот на валидацијата на податоците е формулата со име Regex која се однесува на погрешна ќелија. Во сите примери, препорачавме да се дефинира формула која се однесува на A1:

    =RegExpMatch(A1, regex)

    Ова работи само ако ќелијата A1 е активна кога се дефинира име и <15 Се користи>релативна референца (без знакот $).

    Идејата е дека релативната референца наведена во формулата (A1) автоматски ќе се менува врз основа на релативната позиција на потврдената ќелија. Со други зборови, ќелијата А1 е избрана само поради практичност и конзистентност. Всушност, можете да ја изберете ќелијата B1 и да се повикате на B1, да ја изберете ќелијата C1 и да се однесувате на C1, итн. Клучната работа е дека референтната ќелија треба да биде активната ќелија .

    За да проверите дали вашата именувана формула е точна, изберете која било ќелија во вашиот работен лист, отворете го Именете го менаџерот и видете на која ќелија укажува формулата. Ако се однесува на моментално избраната ќелија, формулата е исправна. Во спротивно, треба да ја смените референцата во првиот аргумент.

    Во скриншотподолу, ќелијата A7 е избрана, што значи дека именуваната формула треба да има A7 во првиот аргумент. Вториот аргумент ($A$2) се однесува на регексот - оваа референца би требало да остане константна, па затоа е заклучена со знакот $.

    Игнорирај празна опција е избрана

    Кога поставувате приспособено правило за валидација на податоци, важно е да го отселектирате полето за избор Игнорирај празно . Во спротивно, правилото нема да работи поради следнава причина:

    Ако не се најде совпаѓање, функцијата RegExpMatch враќа FALSE. Со избраната опција Игнорирај празно , FALSE се изедначува со празно и се игнорира.

    Алтернативно решение е експлицитно наведено дека формулата треба да се врати TRUE:

    =RegExpMatch(…)=TRUE

    Така се прави валидација на податоци во Excel користејќи редовни изрази. Ви благодарам што прочитавте и со нетрпение очекувам да се видиме на нашиот блог следната недела!

    Вежбајте ја работната книга за преземање

    Примери за валидација на податоци Regex (датотека .xlsm)

    Мајкл Браун е посветен технолошки ентузијаст со страст за поедноставување на сложените процеси користејќи софтверски алатки. Со повеќе од една деценија искуство во технолошката индустрија, тој ги усоврши своите вештини во Microsoft Excel и Outlook, како и Google Sheets и Docs. Блогот на Мајкл е посветен на споделување на своето знаење и експертиза со другите, обезбедувајќи лесни за следење совети и упатства за подобрување на продуктивноста и ефикасноста. Без разлика дали сте искусен професионалец или почетник, блогот на Мајкл нуди вредни сознанија и практични совети за да го извлечете максимумот од овие основни софтверски алатки.