Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

vba excel: filtrare elenco con caratteri jolly

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

vba excel: filtrare elenco con caratteri jolly

Postdi karug64 » 30/08/16 19:14

Salve a tutti.

E' possibile tramite vba per excel filtrare un elenco in base ad una "maschera" (di volta in volta diversa) ?

Per esempio:

tutte la parole che contengano come secondo carattere una "E" e come quinto una "A" (nell'esempio = PERSA, CERTA, ecc)

Grazie
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Sponsor
 

Re: vba excel: filtrare elenco con caratteri jolly

Postdi Anthony47 » 31/08/16 00:10

Puoi usare l'operatore LIKE; ad esempio:
Codice: Seleziona tutto
Dim Simil As Boolean, myMask As String
myMask = "?e??a"
Simil = TuaParola Like myMask
A fine istruzione Simil sara' Vero o Falso a seconda del confronto tra la prima variabile e la seconda; per i dettagli devi guardare nell'help on line del vba, alla voce "Operatore Like"

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: vba excel: filtrare elenco con caratteri jolly

Postdi karug64 » 01/09/16 10:32

Ok. Grazie.

E se volessi abbinare la maschera di filtro all'istruzione "find" (" trova la prima parola nell'elenco che soddisfi la maschera di ricerca "?E??A" " o trova la prima parola nell'elenco che soddisfi la maschera di ricerca "???" = trovami la prima parola di tre caratteri qualsiasi" si può fare ?

Grazie
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Re: vba excel: filtrare elenco con caratteri jolly

Postdi Anthony47 » 05/09/16 02:22

Certamente Si, ma l'algoritmo va affinato...
Semplificando si potrebbe realizzare un primo loop che cerchi la corrispondenza secondo la prima regola; poi un secondo loop che, partendo dalla cella corispondente alla prima regola, parta con la ricerca applicando la seconda regola. Esempio con Find
Codice: Seleziona tutto
Dim Rng As Range, retCell As String, mCell As Range
Dim Simil As Boolean, myMask As String

dovecerco = "Foglio3"
compl = "YYYYY"
lastD = Sheets(dovecerco).Cells(Rows.Count, "D").End(xlUp).Row
    Set Rng = Sheets(dovecerco).Range("D:D").Find(What:=compl, LookIn:=xlValues, LookAt:=xlWhole)
    If Not Rng Is Nothing Then
        myMask = "?A??A"
        retWord = ""
        For Each mCell In Rng.Resize(lastD, 1)
            If mCell.Value Like myMask Then
                retCell = mCell.Address
                Exit For
            End If
        Next mCell
    End If

A completamento del codice la variabile retCell conterra' l'indirizzo, all'interno del foglio indicato, della prima parola che risponde alla condizione myMask = "?A??A" dopo aver trovato la stringa indicata.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: vba excel: filtrare elenco con caratteri jolly

Postdi karug64 » 13/09/16 15:41

Per evitare di aprire un nuovo post, su un argomento simile .... (Anthony se è il caso apro un post nuovo...)

E' possibile effettuare la superiore ricerca su un array di stringhe piuttosto che su un foglio ?
Mi pare che il metodo find (con mask "??A??") non funzioni sugli array....

C'è un metodo alternativo ?

Grazie
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Re: vba excel: filtrare elenco con caratteri jolly

Postdi karug64 » 14/09/16 07:25

karug64 ha scritto:Per evitare di aprire un nuovo post, su un argomento simile .... (Anthony se è il caso apro un post nuovo...)

E' possibile effettuare la superiore ricerca su un array di stringhe piuttosto che su un foglio ?
Mi pare che il metodo find (con mask "??A??") non funzioni sugli array....

C'è un metodo alternativo ?

Grazie


Volevo aggiungere che l'array è un AOrr() Variant dove AOrr(1,..) = numero, AOrr(2,...) = stringa, AOrr(3,...) = numero.
Ovviamente il find va fatto su AOrr(2,....).

Grazie
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Re: vba excel: filtrare elenco con caratteri jolly

Postdi Anthony47 » 14/09/16 14:56

Premetto che, dopo le n discussioni non so che macro usi per questa estrazione, ma il lavoro di principio e' esattamente lo stesso:
Quindi partendo dal principio, che era:
Codice: Seleziona tutto
myMask = "?e??a"
Simil = TuaParola Like myMask

Passerai a
Codice: Seleziona tutto
myMask = "?e??a"
For I=Lbound(AOrr,1) to Ubound(AOrr,1)
          If AOrr(I,2) Like myMask then
                    'Codice per cosa fare quando la parola e' trovata
                    Exit For     'Inserire la riga se bisogna USCIRE alla prima parola trovata, togliere per continuare in tutto AOrr
Next I

PS: Spero che gia' adesso porti prima il contenuto del foglio in un array mododimensionale; se non fai cosi' la ricerca su 60mila termini e' lenta

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "vba excel: filtrare elenco con caratteri jolly":


Chi c’è in linea

Visitano il forum: Nessuno e 14 ospiti