Перевірка даних Excel за допомогою регулярних виразів (Regex)

  • Поділитися Цим
Michael Brown

В уроці показано, як виконати перевірку даних в Excel з використанням регулярних виразів за допомогою спеціальної функції RegexMatch.

Коли справа доходить до обмеження введення даних користувачем на аркушах Excel, перевірка даних незамінна. Хочете дозволити тільки числа або дати в даній комірці? Або обмежити текстові значення певною довжиною? Або, можливо, заборонити час за межами заданого діапазону? Не проблема, все це можна легко зробити за допомогою попередньо встановлених або користувацьких критеріїв перевірки. Але що робити, якщо я хочу дозволити тільки дійсні адреси електронної пошти або рядки, які відповідають певному критеріюпевний шаблон? На жаль, це неможливо. Регекс, кажете? Хм... це могло б спрацювати!

    Як зробити перевірку даних Excel за допомогою Regex

    На жаль, жодна з вбудованих функцій Excel не підтримує регекси, і Перевірка даних не є винятком. Щоб мати можливість перевіряти введення в комірку за допомогою регулярних виразів, потрібно спочатку створити власну функцію Regex. Ще одна складність полягає в тому, що користувацькі функції VBA не можуть бути подані до Перевірки даних безпосередньо - вам знадобиться посередник у вигляді іменованої формули.

    Враховуючи вищевикладене, коротко окреслимо кроки, які необхідно виконати для перевірки даних в Excel з використанням регексів:

    1. Створити власну Regex-функцію, яка перевіряє, чи відповідає вхідне значення регулярному виразу.
    2. Визначте ім'я для вашої Regex-формули.
    3. Налаштуйте правило перевірки даних на основі названої формули.
    4. Скопіюйте налаштування перевірки в потрібну кількість комірок.

    Звучить як план? Спробуємо реалізувати його на практиці!

    Перевірка даних Excel за допомогою користувацьких регулярних виразів

    У цьому прикладі розглядається дуже поширений випадок - як дозволити тільки значення певного шаблону.

    Припустимо, що ви зберігаєте в робочому листі деякі коди SKU і хочете бути впевнені, що в список потраплять тільки ті коди, які відповідають заданому шаблону. За умови, що кожен SKU складається з 2 груп символів, розділених дефісом, перша група включає в себе 3 великі літери, а друга - 3 цифри, ви можете визначити такі значення за допомогою наведеного нижче регресу.

    Візерунок : ^[A-Z]{3}-\d{3}$

    Зверніть увагу, що початок (^) і кінець ($) рядка закріплені, тому в комірку не можна вводити жодних символів, крім тих, що є в шаблоні.

    1. додайте користувацьку функцію Regex Match

    Почніть з вставки функції RegExpMatch у вашу робочу книгу. Код вже написаний нашими гуру Excel, тому вам просто потрібно скопіювати його зі сторінки за посиланням вище і вставити в редакторі VBA.

    Ось синтаксис функції для довідки:

    RegExpMatch(text, pattern, [match_case])

    Де:

    • Текст (обов'язково) - вихідний рядок (у нашому контексті - перевірена комірка).
    • Візерунок (обов'язково) - регулярний вираз для пошуку.
    • Match_case (необов'язково) - тип збігу. TRUE або пропущено - чутливий до регістру; FALSE - не чутливий до регістру.

    Порада: Якщо ви користуєтеся нашим пакетом Ultimate Suite, ви можете виконувати перевірку даних Regex в Excel без додавання коду VBA в робочі книги. Просто скористайтеся спеціальною функцією AblebitsRegexMatch, що входить до складу наших інструментів Regex Tools.

    2. створити іменовану формулу

    На цільовому аркуші виділіть комірку A1 (незалежно від її вмісту і незалежно від того, яку саме комірку ви збираєтеся перевіряти), натисніть Ctrl + F3, щоб відкрити Диспетчер імен, і визначте ім'я для цієї формули:

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

    Або ж можна ввести регекс в якусь комірку (в даному прикладі A2) і в якості другого аргументу подати $A$2:

    =RegExpMatch(Лист1!A1, Лист1!$A$2)

    Для коректної роботи формули обов'язково використовуйте відносне посилання на текст аргумент (A1) та абсолютне посилання для зразок ($A$2).

    Враховуючи, що наша формула призначена для валідації номерів SKU, ми назвали її відповідним чином: Підтвердити_SKU .

    Важливе зауваження: при визначенні формули, будь ласка, перевірте, чи правильно вказано перший аргумент посилається на поточну виділену комірку Наприклад, якщо на аркуші виділена комірка А1, то в першому аргументі ставимо А1 (відповідно до наших рекомендацій); якщо виділена комірка В2, то в першому аргументі ставимо В2 і так далі. Не має значення, яке саме посилання ви використовуєте, головне, щоб воно збігалося з поточною виділеною коміркою.

    Покрокову інструкцію див. у статті Як зробити іменовану формулу в Excel.

    3. налаштуйте перевірку даних

    Виділіть першу комірку для перевірки (в нашому випадку А5) і створіть користувацьке правило перевірки даних на основі названої формули. Для цього виконайте наступне:

    1. Натисніть Дані вкладка> Перевірка даних .
    2. В рамках проекту Дозволити у випадаючому списку оберіть Нестандартний .
    3. Введіть наведену нижче формулу у відповідне поле.

      =Підтвердити_SKU

    4. Зніміть прапорець Ігнорувати пусте місце інакше ваше правило не працюватиме.

    За бажанням можна ввести власне повідомлення про помилку, яке буде відображатися при введенні недостовірних даних в комірку.

    Якщо ви відчуваєте, що вам потрібні детальні кроки, ось тут: Як налаштувати користувацьку перевірку даних в Excel.

    4. скопіювати перевірку даних в інші комірки

    Щоб скопіювати налаштування перевірки в більшу кількість комірок, потрібно зробити ось що:

    1. Виділіть комірку з перевіркою даних і натисніть Ctrl + C, щоб скопіювати її.
    2. Виділіть інші комірки, які потрібно перевірити, клацніть по них правою кнопкою миші, натисніть Паста спеціальна і виберіть пункт Валідація варіант.
    3. Натисніть ГАРАЗД. .

    Більш детальну інформацію можна знайти в розділі Як скопіювати перевірку даних.

    Тепер при кожній спробі ввести невірний SKU в будь-яку з перевірених комірок буде з'являтися наступне попереджувальне повідомлення:

    Перевірка електронної пошти за допомогою Regex

    Щоб виконати перевірку електронної пошти, ви починаєте з написання регулярного виразу, який відповідає адресі електронної пошти.

    Візерунок : ^[\w\.\-]+@[A-Za-z0-9]+[A-Za-z0-9\.\-]*[A-Za-z0-9]+\.[A-Za-z]{2,24}$

    Для детального пояснення синтаксису, будь ласка, дивіться Regex для відповідності дійсних адрес електронної пошти.

    А тепер конкретизуйте критерії валідації, виконавши вже знайомі кроки:

    1. Введіть вищевказаний регекс у полі B2.
    2. Виділяємо комірку А1 і задаємо ім'я з назвою Перевірити_Електронну пошту про що йдеться:

      =RegExpMatch(Лист1!A1, Лист1!$B$2)

    3. Для комірки B5 застосуйте спеціальну перевірку даних за наведеною нижче формулою. Важливо, щоб значення Ігнорувати пусте місце опція не повинна бути вибрана.

      =Підтвердіть_Електронну пошту

      Крім того, ви можете налаштувати користувацьке повідомлення про помилку, яке запропонує користувачеві ввести дійсну адресу електронної пошти.

    4. Скопіюйте правило в наступні комірки.

    Якщо адреса електронної пошти, яку ви вводите в перевірену комірку, не відповідає регекс-шаблону, з'явиться наступне попередження:

    Перевірка паролів за допомогою регулярних виразів

    При використанні 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. Введіть пароль regex у полі C2.
    2. Виділіть комірку A1 і створіть іменовану формулу з назвою Підтвердити_Пароль :

      =RegExpMatch(Лист1!A1, Лист1!$C$2)

    3. Для комірки C5 створіть власне правило перевірки за допомогою наведеної нижче формули. Не забудьте зняти позначку Ігнорувати пусте місце прапорець.

      =Підтвердити_Пароль

    4. Скопіюйте правило в потрібну кількість комірок.

    Тепер ви можете сміливо додавати нові паролі до списку. Якщо вхідний рядок не відповідає регексу, наступне попередження нагадає вам, які саме значення приймаються:

    Не працює перевірка регексних даних

    Якщо у вашому Excel не працює перевірка даних Regex, швидше за все, це пов'язано з однією з наступних причин.

    Відсутня функція RegExpMatch

    Перед застосуванням перевірки даних обов'язково вставте код функції RegExpMatch в робочу книгу.

    Неправильний регулярний вираз

    Щоб переконатися, що ваш регекс працює так, як очікується, ви можете ввести формулу RegExpMatch в якусь комірку і перевірити результати. Для отримання додаткової інформації див. статтю Відповідність регулярних виразів в Excel з прикладами.

    Для аналізу і налагодження регулярних виразів можна скористатися безкоштовними онлайн-сервісами тестування регулярних виразів, такими як RegEx101 або RegExr.

    Неправильно названа формула

    Дуже поширеною причиною помилки валідації даних є формула з іменем Regex, що посилається на невірну комірку. У всіх прикладах ми рекомендували визначати формулу, що посилається на A1:

    =RegExpMatch(A1, regex)

    Це працює тільки в тому випадку, якщо клітина А1 активний при визначенні імені та найменування відносне посилання (без знаку $).

    Ідея полягає в тому, що відносне посилання, вказане у формулі (A1), буде автоматично змінюватися в залежності від відносного положення перевіреної комірки. Іншими словами, комірка A1 вибирається просто для зручності і послідовності. Насправді можна виділити комірку B1 і посилатися на B1, виділити комірку C1 і посилатися на C1 і т.д. Головне, щоб у формулі було вказано, що комірка комірка, на яку є посилання має бути активна клітина .

    Щоб перевірити правильність іменованої формули, виділіть будь-яку комірку на аркуші, відкрийте Диспетчер імен і подивіться, на яку комірку посилається формула. Якщо вона посилається на поточну виділену комірку, то формула правильна. У протилежному випадку слід змінити посилання в першому аргументі.

    На скріншоті нижче виділена комірка A7, тобто іменована формула повинна мати в першому аргументі A7. Другий аргумент ($A$2) посилається на регекс - це посилання повинно залишатися постійним, тому воно заблоковане знаком $.

    Вибрана опція ігнорувати порожній рядок

    При налаштуванні користувацького правила перевірки даних важливо зняти прапорець Ігнорувати пусте місце В іншому випадку правило не буде працювати з наступної причини:

    Якщо збіг не знайдено, функція RegExpMatch повертає значення FALSE. При використанні функції Ігнорувати пусте місце вибрана опція, FALSE прирівнюється до порожнього поля та ігнорується.

    Альтернативним рішенням є чітке зазначення того, що формула повинна повертати значення TRUE:

    =RegExpMatch(...)=TRUE

    Ось так виконується перевірка даних в Excel за допомогою регулярних виразів. Дякую за увагу і чекаю вас на нашому блозі наступного тижня!

    Практичний посібник для завантаження

    Приклади перевірки Regex-даних (файл .xlsm)

    Майкл Браун — відданий ентузіаст технологій із пристрастю до спрощення складних процесів за допомогою програмних засобів. Маючи понад десятирічний досвід роботи в технологічній індустрії, він відточив свої навички роботи з Microsoft Excel і Outlook, а також із Google Таблицями та Документами. Блог Майкла присвячений тому, щоб поділитися своїми знаннями та досвідом з іншими, надаючи прості поради та навчальні посібники для підвищення продуктивності та ефективності. Незалежно від того, чи є ви досвідченим професіоналом чи початківцем, блог Майкла пропонує цінну інформацію та практичні поради щодо отримання максимальної користі від цих основних програмних інструментів.