Questa volta il quesito è questo.
Poniamo di avere in A1 una parola di testo. Devo riportare in A2:
Se il problema fosse più semplice, nel senso che se la serie di caratteri da cercare fosse limitata alla sola "aaa" e nota si potrebbe usare la funzione di Excel =RICERCA
=RICERCA("aaa";A3)
Questa, tuttavia, da prove eseguite, restituisce un errore (#VALORE!) se non trova la stringa cercata ed allora occorre modificarla come nell'esempio seguente.
=SE(VAL.ERRORE(RICERCA("aaa";A3));"no";RICERCA("aaa";A3))
oppure, se vogliamo solo sapere se la serie esiste oppure no:
=SE(VAL.ERRORE(RICERCA("aaa";A3));"no";"si")
Questo solo per cercare la stringa "aaa". Se le stringhe da cercare fossero 2, 3 o, peggio, ancora di più la formula diventerebbe mostruosa ed a questo punto io, di solito, preferisco passare al VBA
Per questa circostanza, ho pensato di creare una funzione personalizzata che può essere usata sia da codice VBA che da Excel tramite le funzioni "Definite dall'utente".
La funzione è semplice ed altrettanto semplice è un suo eventuale utilisso come formula da usare nel foglio di Excel.
In questa funzione processo la stringa a partire dal primo carattere al terzultimo For L = 1 To Len(Stringa) - 2
Il processo in questo caso termina quando si incontrano tre caratteri consecutivi uguali:
If Mid(Stringa, L, 1) = Mid(Stringa, L + 1, 1) And Mid(Stringa, L, 1) = Mid(Stringa, L + 2, 1) Then
Se il confronto del carattere che occupa la posizione "L" con quelli della posizione "L + 1" ed "L + 2" risulta positivo, la funzione restituisce un valore True e viene terminata.
Detto questo passiamo a vedere come usare questa funzione.
Da codice VBA lo possiamo vedere all'opera con questo semplice codice:
Sul foglio di Excel lo possiamo usare come una delle funzioni di Excel cercandola però tra le funzioni e lavorando con "Questa finestra di dialogo" oppure scrivendo direttamente sul foglio la formula:
=cercaTreConsecutivi(A2)
o, se il risultato deve essere più complesso, aiutandosi con altre funzioni come in questo esempio:
=SE(cercaTreConsecutivi(A2);"si";"no")
con la prima formula avremo, come risultato il valore della funzione (VERO o FALSO)
con la seconda formula avremo una delle risposte che mettiamo nelle due clausole della funzione SE