Sommario
L'esercitazione mostra come eseguire la convalida dei dati in Excel utilizzando le espressioni regolari con l'aiuto di una funzione RegexMatch personalizzata.
Quando si tratta di limitare l'immissione di dati da parte dell'utente nei fogli di lavoro di Excel, la convalida dei dati è indispensabile. Volete consentire solo numeri o date in una determinata cella? O limitare i valori di testo a una lunghezza specifica? O magari non consentire tempi al di fuori di un determinato intervallo? Nessun problema, tutto questo può essere fatto facilmente con criteri di convalida preimpostati o personalizzati. Ma cosa succede se voglio consentire solo indirizzi e-mail validi o stringhe che corrispondono a unaAhimè, non è possibile. Hai detto Regex? Hmm... potrebbe funzionare!
Come eseguire la convalida dei dati di Excel con Regex
Purtroppo, nessuna delle funzioni integrate di Excel supporta le regex e la Convalida dati non fa eccezione. Per poter convalidare l'input delle celle utilizzando le espressioni regolari, è necessario creare prima una funzione Regex personalizzata. Un'altra complicazione è che le funzioni definite dall'utente di VBA non possono essere servite direttamente alla Convalida dati: è necessario un mediatore sotto forma di una formula con nome.
Alla luce di quanto detto, illustriamo brevemente i passi da compiere per convalidare i dati in Excel utilizzando le regex:
- Creare una funzione Regex personalizzata che verifichi se un valore di input corrisponde a un'espressione regolare.
- Definire un nome per la formula Regex.
- Configurare una regola di convalida dei dati basata sulla formula indicata.
- Copiare le impostazioni di convalida in tutte le celle desiderate.
Sembra un piano? Proviamo a metterlo in pratica!
Convalida dei dati di Excel mediante espressioni regolari personalizzate
Questo esempio affronta un caso molto comune: come consentire solo i valori di uno schema specifico.
Supponiamo di avere alcuni codici SKU nel nostro foglio di lavoro e di voler essere sicuri che solo i codici che corrispondono a un determinato schema vengano inseriti nell'elenco. A condizione che ogni SKU sia composto da 2 gruppi di caratteri separati da un trattino, il primo gruppo includa 3 lettere maiuscole e il secondo gruppo 3 cifre, è possibile identificare tali valori utilizzando la seguente regex.
Modello : ^[A-Z]{3}-\d{3}$
Si noti che l'inizio (^) e la fine ($) della stringa sono ancorati, quindi non è possibile inserire in una cella caratteri diversi da quelli del modello.
1. Aggiungere una funzione Regex Match personalizzata
Iniziate inserendo la funzione RegExpMatch nella vostra cartella di lavoro. Il codice è già stato scritto dai nostri guru di Excel, quindi dovete solo copiarlo dalla pagina sopra linkata e incollarlo nel vostro editor VBA.
Ecco la sintassi della funzione come riferimento:
RegExpMatch(testo, modello, [match_case])Dove:
- Testo (obbligatorio) - una stringa di origine (nel nostro contesto, una cella convalidata).
- Modello (obbligatorio) - un'espressione regolare da confrontare.
- Caso_di_corrente (facoltativo) - tipo di corrispondenza. TRUE o omesso - sensibile alle maiuscole e alle minuscole; FALSE - insensibile alle maiuscole e alle minuscole.
Suggerimento: se si utilizza la nostra Ultimate Suite, è possibile eseguire la convalida dei dati Regex in Excel senza aggiungere alcun codice VBA alle cartelle di lavoro. È sufficiente utilizzare una funzione personalizzata AblebitsRegexMatch inclusa nei nostri Regex Tools.
2. Creare una formula con nome
Nel foglio di lavoro di destinazione, selezionate la cella A1 (indipendentemente dal suo contenuto e dalla cella che intendete convalidare), premete Ctrl + F3 per aprire la Gestione nomi e definite un nome per questa formula:
=RegExpMatch(Sheet1!A1, "^[A-Z]{3}-\d{3}$")
Oppure potete inserire la regex in una cella (A2 in questo esempio) e fornire $A$2 al secondo argomento:
=RegExpMatch(Foglio1!A1, Foglio1!$A$2)
Affinché la formula funzioni correttamente, assicurarsi di utilizzare un riferimento relativo per l'elemento testo (A1) e il riferimento assoluto per modello ($A$2).
Dato che la nostra formula è destinata a convalidare i numeri di SKU, la chiamiamo di conseguenza: Convalida_SKU .
Nota importante: quando si definisce la formula, verificare che il parametro Il primo argomento si riferisce alla cella attualmente selezionata Per esempio, se nel foglio è selezionata la cella A1, mettete A1 come primo argomento (secondo le nostre raccomandazioni); se è selezionata la cella B2, usate B2 come primo argomento, e così via. Non importa quale sia il riferimento particolare che utilizzate, purché corrisponda alla cella attualmente selezionata.
Per le istruzioni passo-passo, vedere Come creare una formula con nome in Excel.
3. Impostare la convalida dei dati
Selezionate la prima cella da controllare (A5 nel nostro caso) e create una regola di convalida dei dati personalizzata basata sulla formula nominata. A tale scopo, procedete come segue:
- Cliccare Dati scheda> Convalida dei dati .
- Nel Consentire elenco a discesa, selezionare Personalizzato .
- Inserite la formula seguente nella casella corrispondente.
=Validate_SKU
- Deselezionare l'opzione Ignorare il vuoto altrimenti la regola non funzionerà.
È possibile digitare un messaggio di errore personalizzato da visualizzare quando in una cella vengono inseriti dati non validi.
Se ritenete di aver bisogno di una guida dettagliata, eccovi accontentati: Come impostare la convalida dei dati personalizzata in Excel.
4. Copiare la convalida dei dati in altre celle
Per copiare le impostazioni di convalida in più celle, è necessario procedere in questo modo:
- Selezionare la cella con la convalida dei dati e premere Ctrl + C per copiarla.
- Selezionare altre celle che si desidera convalidare, fare clic con il tasto destro del mouse, fare clic su Incolla speciale , e scegliere il tasto Convalida opzione.
- Cliccare OK .
Ulteriori informazioni sono disponibili in Come copiare la convalida dei dati.
Ora, ogni volta che si tenta di inserire uno SKU non valido in una qualsiasi delle celle convalidate, viene visualizzato il seguente messaggio di avviso:
Convalida delle e-mail con Regex
Per eseguire la convalida delle e-mail, si inizia scrivendo un'espressione regolare che corrisponda a un indirizzo e-mail.
Modello : ^[\w\.\-]+@[A-Za-z0-9]+[A-Za-z0-9\.\-]*[A-Za-z0-9]+\.[A-Za-z]{2,24}$
Per una spiegazione dettagliata della sintassi, vedere Regex per la corrispondenza di indirizzi e-mail validi.
E ora, specificate i criteri di validazione eseguendo i passaggi già noti:
- Inserite la regex di cui sopra in B2.
- Selezionare la cella A1 e definire un nome chiamato Convalida_Email che si riferisce a:
=RegExpMatch(Foglio1!A1, Foglio1!$B$2)
- Per la cella B5, applicare una convalida dei dati personalizzata utilizzando la formula seguente. È essenziale che la formula Ignorare il vuoto deve essere deselezionata.
=Validate_Email
Inoltre, è possibile configurare un messaggio di errore personalizzato che richiede all'utente di inserire un indirizzo e-mail valido.
- Copiare la regola nelle celle sottostanti.
Se un indirizzo e-mail inserito in una cella convalidata non corrisponde a un modello regex, viene visualizzato il seguente avviso:
Convalida delle password con le espressioni regolari
Quando si utilizzano le regex per la convalida delle password, la prima cosa da decidere è che cosa deve controllare esattamente l'espressione regolare. Ecco alcuni esempi che potrebbero mettervi sulla strada giusta.
La password deve essere lunga almeno 6 caratteri e può contenere solo lettere (maiuscole o minuscole) e cifre:
Modello : ^[A-Za-z0-9]{6,}$
La password deve avere una lunghezza minima di 6 caratteri e comprendere almeno una lettera e una cifra:
Modello : ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,}$
La password deve avere una lunghezza minima di 6 caratteri e includere almeno una lettera maiuscola, una lettera minuscola e una cifra:
Modello : ^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z\d]{6,}$
La password deve avere una lunghezza minima di 6 caratteri e comprendere almeno una lettera, una cifra e un carattere speciale:
Modello : ^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&_-])[A-Za-z\d@$!%*#?&_-]{6,}$
Una volta stabilito lo schema, si può passare all'impostazione della Convalida dei dati:
- Inserire la regex della password in C2.
- Selezionate la cella A1 e create una formula denominata Convalida_Password :
=RegExpMatch(Foglio1!A1, Foglio1!$C$2)
- Per la cella C5, creare una regola di convalida personalizzata con la formula seguente. Ricordarsi di deselezionare il campo Ignorare il vuoto casella di controllo.
=Validate_Password
- Copiare la regola in tutte le celle desiderate.
Ora è possibile aggiungere in modo sicuro nuove password all'elenco. Se una stringa di input non corrisponde alla regex, il seguente avviso ricorda quali tipi di valori sono accettati:
La convalida dei dati Regex non funziona
Se la convalida dei dati Regex non funziona in Excel, molto probabilmente è dovuto a uno dei seguenti motivi.
Manca la funzione RegExpMatch
Prima di applicare la convalida dei dati, assicurarsi di inserire il codice della funzione RegExpMatch nella cartella di lavoro.
Espressione regolare errata
Per verificare che la regex funzioni come previsto, è possibile inserire una formula RegExpMatch in una cella ed esaminare i risultati. Per ulteriori informazioni, consultare la sezione Corrispondenza delle espressioni regolari di Excel con esempi.
Per analizzare ed eseguire il debug delle espressioni regolari, è possibile utilizzare servizi gratuiti di verifica delle regex online, come RegEx101 o RegExr.
Formula con nome sbagliato
Un motivo molto comune di fallimento della convalida dei dati è una formula denominata Regex che fa riferimento a una cella sbagliata. In tutti gli esempi, si raccomanda di definire una formula che faccia riferimento ad A1:
=RegExpMatch(A1, regex)
Questo funziona solo se la cella A1 è attivo quando si definisce un nome e un elemento riferimento relativo (senza il segno $).
L'idea è che un riferimento relativo specificato nella formula (A1) cambi automaticamente in base alla posizione relativa della cella convalidata. In altre parole, la cella A1 è stata scelta solo per comodità e coerenza. In realtà, è possibile selezionare la cella B1 e fare riferimento a B1, selezionare la cella C1 e fare riferimento a C1, e così via. La cosa fondamentale è che la formula cella di riferimento dovrebbe essere il cella attiva .
Per verificare se la formula con nome è corretta, selezionate una cella qualsiasi del foglio di lavoro, aprite la Gestione nomi e verificate a quale cella punta la formula. Se si riferisce alla cella attualmente selezionata, la formula è corretta. In caso contrario, è necessario modificare il riferimento nel primo argomento.
Nella schermata qui sotto, la cella A7 è selezionata, il che significa che una formula con nome deve avere A7 come primo argomento. Il secondo argomento ($A$2) si riferisce alla regex - questo riferimento deve rimanere costante, quindi è bloccato con il segno $.
Opzione Ignora vuoto selezionata
Quando si imposta una regola di convalida dei dati personalizzata, è importante deselezionare l'opzione Ignorare il vuoto Altrimenti, la regola non funzionerà per il seguente motivo:
Se non viene trovata una corrispondenza, la funzione RegExpMatch restituisce FALSE. Con l'opzione Ignorare il vuoto è stata selezionata l'opzione FALSE, che equivale a vuoto e viene ignorata.
Una soluzione alternativa consiste nel dichiarare esplicitamente che la formula deve restituire VERO:
=RegExpMatch(...)=TRUE
Ecco come eseguire la convalida dei dati in Excel utilizzando le espressioni regolari. Vi ringrazio per la lettura e vi aspetto sul nostro blog la prossima settimana!
Eserciziario da scaricare
Esempi di convalida dei dati Regex (file .xlsm)