› Sviluppare funzionalita su Microsoft Office con VBA › Intercettare una stringa di caratteri in un range di celle
- AutoreArticoli
Ciao a tutti.
E' possibile che un argomento uguale o simile sia già stato trattato in un'altra discussione e, nel caso, mi scuso anticipatamente e continuo la ricerca nel forum,
La mia esigenza è (credo) piuttosto semplice ma, confesso, ci sto girando intorno da un paio di giorni senza successo.
In sintesi devo intercettare la presenza di una stringa di caratteri all'interno di un intervallo di celle. Ho messo in campo INSTR (in un loop), FIND e COUNTIFS (con le varie opzioni) e, per ragioni diverse, o l'una o l'altra non restituiscono il risultato desiderato. Probabilmente mi sono "incartato". Quindi:
Testo da intercettare:
"ABC"
123
"ABC_123"
"aBc_123"
"abc"
Range:
Cella #1: "ABC_123"
Cella #2: 123
Cella #3: "zzzzzzzzzabczzzz"
Cella #4: "abc_123"
Il mio obiettivo è ovviamente coprire tutti i casi ma con un solo comando. In pratica:
Testo Ricerca: "ABC"
RISULTATO: Cella #1, Cella #3, Cella #4
Testo Ricerca: 123
RISULTATO: Cella #1 e Cella #2
Testo Ricerca: "ABC_123"
RISULTATO: Cella #1 e Cella #4
Testo Ricerca: "aBc_123"
RISULTATO: Cella #1 e Cella #4
Testo Ricerca: "abc"
RISULTATO: Cella #1, Cella #3, Cella#4
Spero di aver chiaramente espresso il mio problema; per esperienza pregressa sono certo che qui avrò indicazioni importanti/risolutive.
Grazie mille.
Alberto.
Ciao @alberto!
Premesso che è sempre meglio allegare un file di Excel con i dati (non sensibili e l'abbozzo della macro che intendi fare), la soluzione con VBA è abbastanza semplice….
Devi creare un ciclo di scansione del range di celle (siano su una riga o su una colonna), cercando le stringhe che ti interessano e parcheggiando i risultati per esempio in un array che chiamerai con il nome della stringa che stai cercando ed alla fine farai dare in output i risultati
Ciao
Paolo
Grazie Paolo.
Hai ragione, per maggior chiarezza ed agevolare l'indicazione di suggerimenti avrei dovuto allegare un file d'esempio. Chiedo scusa.
E proprio nel prepararlo mi sono accorto che con la FIND (e i parametri LookAt:=xlPart, MatchCase:=False) in un loop riesco a coprire tutti i casi di interesse.... almeno per il momento!
E' una soluzione semplice che avevo implementato ma che, probabilmente, mi è sfuggita o non ho analizzato con la giusta attenzione nei giorni scorsi.
CASO RISOLTO.
Grazie ancora.
Alberto.
- AutoreArticoli