Spis treści
Samouczek pokazuje, jak wykonać walidację danych w Excelu przy użyciu wyrażeń regularnych za pomocą niestandardowej funkcji RegexMatch.
Jeśli chodzi o ograniczanie danych wprowadzanych przez użytkownika w arkuszach Excela, Walidacja Danych jest niezbędna. Chcesz zezwolić na wprowadzanie tylko liczb lub dat w danej komórce? Albo ograniczyć wartości tekstowe do określonej długości? A może nie zezwolić na wprowadzanie czasów spoza danego zakresu? Nie ma problemu, wszystko to można łatwo zrobić za pomocą wstępnie ustawionych lub własnych kryteriów walidacji. Ale co, jeśli chcę zezwolić tylko na prawidłowe adresy e-mail lub ciągi znaków pasujące dokonkretny wzór? Niestety, to nie jest możliwe. Regex mówisz? Hmm... to może zadziałać!
Jak wykonać walidację danych w Excelu za pomocą Regexu
Niestety, żadna z wbudowanych funkcji Excela nie obsługuje regexów, a Walidacja Danych nie jest wyjątkiem. Aby móc sprawdzać poprawność danych wejściowych w komórkach za pomocą wyrażeń regularnych, musisz najpierw utworzyć niestandardową funkcję Regex. Kolejną komplikacją jest to, że funkcje zdefiniowane przez użytkownika VBA nie mogą być bezpośrednio serwowane do Walidacji Danych - będziesz potrzebował pośrednika w postaci nazwanej formuły.
Biorąc pod uwagę powyższe, pokrótce przedstawmy kroki, które należy podjąć, aby zatwierdzić dane w Excelu za pomocą regexów:
- Utwórz niestandardową funkcję Regex, która sprawdza, czy wartość wejściowa pasuje do wyrażenia regularnego.
- Zdefiniuj nazwę dla swojej formuły Regex.
- Skonfiguruj regułę Walidacja danych w oparciu o nazwaną formułę.
- Skopiuj ustawienia sprawdzania poprawności do tylu komórek, ile chcesz.
Brzmi jak plan, spróbujmy go zrealizować w praktyce!
Walidacja danych w programie Excel przy użyciu niestandardowych wyrażeń regularnych
Ten przykład dotyczy bardzo częstego przypadku - jak zezwolić tylko na wartości określonego wzorca.
Załóżmy, że przechowujesz w arkuszu kody SKU i chcesz mieć pewność, że na listę trafią tylko kody pasujące do danego wzorca. Zakładając, że każdy SKU składa się z 2 grup znaków oddzielonych myślnikiem, przy czym pierwsza grupa zawiera 3 duże litery, a druga - 3 cyfry, możesz zidentyfikować takie wartości za pomocą poniższego regexa.
Wzór : ^[A-Z]{3}-$
Zwróć uwagę, że początek (^) i koniec ($) ciągu są zakotwiczone, więc do komórki nie można było wprowadzić żadnych znaków innych niż we wzorcu.
1. dodaj niestandardową funkcję Regex Match
Zacznij od wstawienia do swojego skoroszytu funkcji RegExpMatch. Kod jest już napisany przez naszych guru od Excela, więc wystarczy, że skopiujesz go z podlinkowanej wyżej strony i wkleisz do swojego edytora VBA.
Oto składnia funkcji dla twojego odniesienia:
RegExpMatch(text, pattern, [match_case])Gdzie:
- Tekst (wymagane) - ciąg źródłowy (w naszym kontekście - zatwierdzona komórka).
- Wzór (wymagane) - wyrażenie regularne do dopasowania.
- Dopasowanie (opcjonalne) - typ dopasowania. TRUE lub pominięte - rozróżnianie wielkości liter; FALSE - nierozróżnianie wielkości liter.
Wskazówka. Jeśli jesteś użytkownikiem naszego pakietu Ultimate Suite, możesz wykonywać walidację danych Regex w programie Excel bez dodawania jakiegokolwiek kodu VBA do swoich skoroszytów. Wystarczy wykorzystać niestandardową funkcję AblebitsRegexMatch dołączoną do naszych narzędzi Regex.
2. utwórz formułę nazwaną
W arkuszu docelowym zaznacz komórkę A1 (bez względu na jej zawartość i bez względu na to, którą komórkę faktycznie zamierzasz zatwierdzić), naciśnij Ctrl + F3, aby otworzyć Menedżera nazw, i zdefiniuj nazwę dla tej formuły:
=RegExpMatch(Sheet1!A1, "^[A-Z]{3}-\d{3}$")
Możesz też wpisać regex do jakiejś komórki (A2 w tym przykładzie) i dostarczyć $A$2 do drugiego argumentu:
=RegExpMatch(Sheet1!A1, Sheet1!$A$2)
Aby formuła działała poprawnie, należy pamiętać o użyciu odniesienia względnego dla tekst argument (A1) i odniesienie bezwzględne dla wzór ($A$2).
Biorąc pod uwagę, że nasza formuła jest przeznaczona do sprawdzania poprawności numerów SKU, nadajemy jej odpowiednią nazwę: Walidacja_SKU .
Ważna uwaga! Podczas definiowania formuły należy sprawdzić, czy. pierwszy argument odnosi się do aktualnie wybranej komórki , w przeciwnym razie formuła nie zadziała. Na przykład, jeśli na arkuszu wybrana jest komórka A1, to w pierwszym argumencie umieść A1 (zgodnie z naszymi zaleceniami); jeśli wybrana jest komórka B2, to w pierwszym argumencie użyj B2, i tak dalej. Tak naprawdę nie ma znaczenia, jakiego konkretnego odwołania użyjesz, o ile pasuje ono do aktualnie wybranej komórki.
Aby uzyskać instrukcje krok po kroku, zobacz Jak zrobić formułę nazwaną w programie Excel.
3. skonfigurować walidację danych
Wybierz pierwszą komórkę do sprawdzenia (A5 w naszym przypadku) i utwórz niestandardową regułę sprawdzania poprawności danych w oparciu o nazwaną formułę. W tym celu wykonaj następujące czynności:
- Kliknij Dane tab> Walidacja danych .
- W Pozwól z listy rozwijanej wybierz Niestandardowe .
- Wpisz poniższą formułę w odpowiednie pole.
=Validate_SKU
- Usuń zaznaczenie Zignoruj puste miejsce opcja, inaczej twoja reguła nie będzie działać.
Opcjonalnie można wpisać niestandardowy komunikat o błędzie, który będzie wyświetlany, gdy w komórce zostaną wprowadzone nieprawidłowe dane.
Jeśli czujesz, że potrzebujesz szczegółowych kroków, oto one: Jak skonfigurować niestandardową Walidację danych w programie Excel.
4. skopiowanie walidacji danych do większej ilości komórek
Aby skopiować ustawienia walidacji do większej liczby komórek, należy zrobić to w następujący sposób:
- Wybierz komórkę ze sprawdzaniem poprawności danych i naciśnij Ctrl + C, aby ją skopiować.
- Wybierz inne komórki, które chcesz zatwierdzić, kliknij je prawym przyciskiem myszy, kliknij Wklej Specjalnie , i wybrać Walidacja opcja.
- Kliknij OK .
Więcej informacji można znaleźć w rozdziale Jak skopiować Walidację danych.
Teraz, za każdym razem, gdy ktoś spróbuje wprowadzić nieprawidłowy SKU w dowolnej z zatwierdzonych komórek, pojawi się następujący komunikat ostrzegawczy:
Walidacja poczty elektronicznej za pomocą Regexu
Aby wykonać walidację emaili, zaczynasz od napisania wyrażenia regularnego, które pasuje do adresu email.
Wzór : ^[\w\.\-]+@[A-Za-z0-9]+[A-Za-z0-9\.\-]*[A-Za-z0-9]+\.[A-Za-z]{2,24}$
Aby uzyskać szczegółowe wyjaśnienie składni, zobacz Regex do dopasowania ważnych adresów e-mail.
A teraz określ kryteria walidacji, wykonując znane już czynności:
- Wpisz powyższy regex w B2.
- Zaznacz komórkę A1 i zdefiniuj nazwę o nazwie Walidacja_Email który odnosi się do:
=RegExpMatch(Sheet1!A1, Sheet1!$B$2)
- Dla komórki B5 zastosuj niestandardowe sprawdzanie poprawności danych za pomocą poniższej formuły.Istotne jest, aby Zignoruj puste miejsce opcja powinna być odznaczona.
=Validate_Email
Dodatkowo można skonfigurować niestandardowy komunikat o błędzie, w którym użytkownik będzie proszony o podanie prawidłowego adresu e-mail.
- Skopiuj regułę do poniższych komórek.
Jeśli adres e-mail wprowadzony w zatwierdzonej komórce nie pasuje do wzorca regex, pojawi się następujący alert:
Walidacja haseł przy użyciu wyrażeń regularnych
Kiedy używasz regex do sprawdzania poprawności hasła, pierwszą rzeczą, którą musisz zdecydować jest dokładnie to, co twoje wyrażenie regularne powinno sprawdzić. Oto kilka przykładów, które mogą ustawić cię na właściwej drodze.
Hasło musi mieć długość co najmniej 6 znaków i może zawierać tylko litery (duże lub małe) i cyfry:
Wzór : ^[A-Za-z0-9]{6,}$
Hasło musi mieć długość minimum 6 znaków i zawierać co najmniej jedną literę i jedną cyfrę:
Wzór : ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,}$
Hasło musi mieć długość min 6 znaków i zawierać co najmniej jedną wielką literę, jedną małą literę i jedną cyfrę:
Wzór : ^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z\d]{6,}$
Hasło musi mieć długość min 6 znaków i zawierać co najmniej jedną literę, jedną cyfrę i jeden znak specjalny:
Wzór : ^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&_-])[A-Za-z\d@$!%*#?&_-]{6,}$
Mając ustalony wzorzec, można przejść do ustawiania Walidacji danych:
- Wprowadź swój regex hasła w C2.
- Zaznacz komórkę A1 i utwórz formułę nazwaną WalidacjaHasła :
=RegExpMatch(Sheet1!A1, Sheet1!$C$2)
- Dla komórki C5 utwórz niestandardową regułę sprawdzania poprawności z poniższą formułą. Pamiętaj, aby nie zaznaczać pola Zignoruj puste miejsce pole wyboru.
=Validate_Password
- Skopiuj regułę do tylu komórek, ile chcesz.
Teraz możesz bezpiecznie dodawać nowe hasła do listy. Jeśli ciąg wejściowy nie pasuje do regexu, poniższy alert przypomni Ci, jakie rodzaje wartości są akceptowane:
Walidacja danych Regex nie działa
Jeśli Regex Data Validation nie działa w twoim Excelu, najprawdopodobniej jest to spowodowane jednym z następujących powodów.
Brak funkcji RegExpMatch
Przed zastosowaniem Walidacji danych należy pamiętać o wstawieniu kodu funkcji RegExpMatch do swojego skoroszytu.
Nieprawidłowe wyrażenie regularne
Aby upewnić się, że twój regex działa zgodnie z oczekiwaniami, możesz wprowadzić formułę RegExpMatch w jakiejś komórce i zbadać wyniki. Aby uzyskać więcej informacji, zobacz Excel Dopasowywanie wyrażeń regularnych z przykładami.
Aby przeanalizować i debugować swoje wyrażenia regularne, możesz skorzystać z darmowych usług testowania regexów online, takich jak RegEx101 lub RegExr.
Nieprawidłowo nazwana formuła
Bardzo częstą przyczyną niepowodzenia walidacji danych jest formuła Regex o nazwie odwołującej się do niewłaściwej komórki. We wszystkich przykładach zalecaliśmy zdefiniowanie formuły odwołującej się do A1:
=RegExpMatch(A1, regex)
Działa to tylko wtedy, gdy komórka A1 jest aktywny przy definiowaniu nazwy i odniesienie względne (bez znaku $) jest używany.
Idea jest taka, że względne odniesienie określone w formule (A1) będzie się automatycznie zmieniać w zależności od względnej pozycji sprawdzanej komórki. Innymi słowy, komórka A1 jest wybrana tylko dla wygody i spójności. W rzeczywistości możesz wybrać komórkę B1 i odwołać się do B1, wybrać komórkę C1 i odwołać się do C1 itd. Kluczową rzeczą jest to, że referowana komórka powinien być komórka aktywna .
Aby sprawdzić, czy Twoja formuła nazwana jest poprawna, wybierz dowolną komórkę w arkuszu, otwórz Menedżera nazw i zobacz, na którą komórkę wskazuje formuła. Jeśli odnosi się do aktualnie wybranej komórki, formuła jest poprawna. W przeciwnym razie powinieneś zmienić odwołanie w pierwszym argumencie.
Na poniższym zrzucie ekranu zaznaczona jest komórka A7, co oznacza, że formuła nazwana powinna mieć A7 w pierwszym argumencie. Drugi argument ($A$2) odnosi się do regexu - to odniesienie ma pozostać stałe, więc jest zablokowane znakiem $.
Wybrano opcję Ignoruj puste miejsca
Podczas ustawiania niestandardowej reguły sprawdzania poprawności danych, ważne jest, aby odznaczyć Zignoruj puste miejsce W przeciwnym razie reguła nie będzie działać z następującego powodu:
Jeśli nie zostanie znalezione dopasowanie, funkcja RegExpMatch zwraca FALSE. z Zignoruj puste miejsce wybrana opcja FALSE oznacza puste miejsce i jest ignorowana.
Alternatywnym rozwiązaniem jest wyraźne stwierdzenie, że formuła powinna zwrócić TRUE:
=RegExpMatch(...)=TRUE
Oto jak zrobić Walidację danych w Excelu za pomocą wyrażeń regularnych. Dziękuję za przeczytanie i czekam na Ciebie na naszym blogu w przyszłym tygodniu!
Zeszyt ćwiczeń do pobrania
Przykłady walidacji danych Regex (plik .xlsm)