Carlo ha molti dati testuali in una cartella di lavoro. Alcuni di questi dati testuali contengono date. Ha bisogno di un modo per rimuovere eventuali date, ma lasciare invariato qualsiasi altro testo che potrebbe trovarsi in una cella. Ad esempio, ciò che inizia come “15/4/16 test eseguito con successo” o “test eseguito il 15/4/16″ dovrebbe diventare, dopo l’eliminazione, ” test eseguito con successo” e “test eseguito il “.
Se le tue date seguono sempre uno schema standard, puoi utilizzare la funzione SOSTITUISCI per rimuoverle. Ad esempio, se la data è sempre composta da un giorno a due cifre, da un mese a due cifre e da un anno a quattro cifre, puoi utilizzare quanto segue per rimuoverla:
=SOSTITUISCI(A2;STRINGA.ESTRAI(A2;RICERCA("??/??/????";A2);10);)
Ci sono molti problemi con una formula così. Innanzitutto, restituisce un valore di errore se non è presente alcuna data nella cella A2 o se la data nella cella A2 ha, ad esempio, il mese con una sola cifra.
Se la tua data appare all’inizio o alla fine del testo in una cella, puoi utilizzare un diverso tipo di formula:
=SE.ERRORE(SE(VALORE(SINISTRA(A2; 1)) > 0; DESTRA(A2; LUNGHEZZA(A2) - 8); ""); SINISTRA(A2; TROVA( "/";A2) - 3))
Il problema con questo approccio è che richiede che la data all’inizio della stringa sia lunga 8 caratteri, mentre funziona bene per le date alla fine della stringa di ogni lunghezza.
Allo stesso tempo rimuoverà erroneamente stringhe che sono vagamente simili alle date, ma in realtà non lo sono, come “98/56/34” e “15-1/2”, mentre non rimuoverà le date scritte come nei seguenti esempi: “15-Apr-2017” e “15 Aprile, 2017”.
Un approccio più versatile consiste nell’utilizzare una macro per cercare una data e quindi rimuoverla dalla stringa. La seguente macro di esempio esamina i contenuti di una cella e li suddivide in “parole” utilizzando la funzione Split. Quindi inizia a rimettere insieme le parole, purché la parola non sia una data.
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)
Si utilizza la macro come funzione definita dall’utente nel foglio di lavoro, come segue:
=RemoveDates(A2)
Questo approccio riconoscerà correttamente i principali formati di data, ma non, ad esempio, quello “15 Aprile, 2017”.
Un altro inconveniente di questa macro è che se hai più spazi tra le parole, quegli spazi vengono rimossi durante il processo di sostituzione. Se questo è un grosso problema per te, potresti considerare di fare affidamento su un’espressione regolare nella tua macro, come questa:
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)
Questa funzione viene utilizzata nel foglio di lavoro allo stesso modo della precedente funzione definita dall’utente:
=RemoveDates2(A2)
L’uso di espressioni regolari può sembrare un’arte nera per alcuni, ma questo uso particolare è piuttosto semplice. Il modello (memorizzato nella variabile sPattern) dice che una o due cifre seguite da un carattere di divisione (trattino, punto, barra rovesciata o barra) seguite da una o due cifre più seguite da un altro carattere di divisione seguito da due o quattro cifre è considerata una data. Se tale corrispondenza viene trovata nella cella, viene rimossa.
Per utilizzare l’approccio delle espressioni regolari, devi assicurarti di includere un riferimento alla seguente libreria nell’editor di Visual Basic (scegli Riferimenti dal menu Strumenti):
Microsoft VBScript Regular Expressions 5.5
Si noti inoltre che la funzione restituisce “Non trovata” se nessuna data formattata come indicato nella regola viene trovata nella cella a cui si fa riferimento.