Condividi:        

filtra più parole contemporaneamente

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

filtra più parole contemporaneamente

Postdi calculon » 20/07/11 20:30

CIao a tutti,
avrei l'esigenza di creare una macro capace di ispezionare una intera colonna (a1), verificare il suo contenuto e valutare se in ciascuna cella esaminata è contenuta una delle due parole chiave di mio interesse, diversamente cancellare la cella stessa.

Per fare un esempio:

se trovi Marco non fare nulla
se trovi Milano non fare nulla
se trovi X <> da Marco o Milano cancella la cella.

n.b. Le parole chiave sono comprese in un testo "Marco è un ragazzo molto simpatico"; "Milano è una città del Nord"; "Giuseppe sgrida Marco".


Grazieeee
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08

Sponsor
 

Re: filtra più parole contemporaneamente

Postdi Flash30005 » 20/07/11 23:04

Lascia una riga vuota come testata
quindi il tuo elenco partirà da A2
In F1 scrivi la prima parola da cercare (Marco) e in G1 insierisci la seconda parola (Milano)
Poi in un modulo inserisci questa macro che scriverà sulla colonna B solo le celle da te interessate
poi successivamente potrai sostituire la colonna A con La B
Codice: Seleziona tutto
Sub CercaNomi()
    URR = Range("A" & Rows.Count).End(xlUp).Row
    For Ciclo = 1 To 2
     Stringa = Array(Range("F1").Value)
     If Ciclo = 2 Then Stringa = Range("G1").Value
        With Worksheets("Foglio1").Range("A2:A" & URR)
            Set C = .Find(Stringa, LookAt:=xlPart, LookIn:=xlFormulas)
                If Not C Is Nothing Then
                    firstAddress = C.Address
                    RC = C.Row
                    Range("A" & RC).Copy Destination:=Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)
                    Do
                        Set C = .FindNext(C)
                        If firstAddress = C.Address Then Exit Do
                        RC = C.Row
                         Range("A" & RC).Copy Destination:=Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)
                    Loop While Not C Is Nothing And C.Address <> firstAddress
                End If
        End With
    Next Ciclo
End Sub

In caso di problemi o implemantazioni posta ancora

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: filtra più parole contemporaneamente

Postdi calculon » 21/07/11 22:56

Grazie per la risposta!

In realtà quello che mi occorre è qualcosa di leggermente diverso. Mi sono spiegato male nel precedente post.

Hai presente la funzione fitro di excel? Ebbene, il suo pregio è quello di trovare la parola chiave senza trasferire contenuti semplicemente eclissando le righe che non interessano.

Riuscendo a impostare due distinte parole chiave si potrebbe fare una roba del genere:

Milano
Roma
giuseppe
Marco

FILTRO ---------------

Milano
Marco

Ecco dati che mi interessano nell'ordine che fa al caso mio.


Insomma, non esiste la funzione filtra cella che contiene : xxxx AND yyyy?

Grazieee
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08

Re: filtra più parole contemporaneamente

Postdi Anthony47 » 21/07/11 23:59

Scusate, perche' allora non usi il filtro automatico?
-applichi il filtro alla colonna
-scegli Personalizza
-poi, ad esempio, scegli Contiene Marco; spunti Or; scegli Contiene Milano
-Ok
Visualizzerai cosi' solo le celle che contengono almeno una delle parole prescelte; se vuoi copi tutta la colonna e incolli su Foglio2, dove avrai solo le righe filtrate.

Volendo usi due celle per inserirgli le parole chiavi, poi registri una macro mentre fai quello che ho detto sopra; poi editi la macro per passare da valori fissi a valori da prelevare nelle due celle di servizio. Se serve aiuto per questa fase di personalizzazione della macro posta ancora, allegando il codice prodotto dal registratore.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: filtra più parole contemporaneamente

Postdi calculon » 22/07/11 16:46

no comment.
Vi dico solo che ho perso una nottata per cercare di risolvere questo problema.

Come al solito, GRAZIE!
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08

Re: filtra più parole contemporaneamente

Postdi calculon » 23/07/11 08:47

ActiveSheet.Range("$A$1:$A$3").AutoFilter Field:=1, Criteria1:="=ciao", _
Operator:=xlOr, Criteria2:="=mamma"

e se volessi aggiungere una terza parola?
ad es. un criteria3?
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08

Re: filtra più parole contemporaneamente

Postdi Flash30005 » 23/07/11 10:55

aggiungi
Codice: Seleziona tutto
..., Operator:=xlOr, Criteria3:="=terzaparola"
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: filtra più parole contemporaneamente

Postdi calculon » 24/07/11 09:42

errore definito dall'applicazione o dall'oggetto.

ActiveSheet.Range("$A$1:$A$3933").AutoFilter Field:=1, Criteria1:="=*min", _
Operator:=xlOr, Criteria2:="=concessione*", Operator:=xlOr, Criteria3:="=/*"
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08

Re: filtra più parole contemporaneamente

Postdi Flash30005 » 24/07/11 10:24

Se hai excel 2003 non puoi avere 3 criteri di filtratura e per questo va in errore
se invece hai excel 2007
dovresti cambiare il terzo criterio con un doppio asterisco
altrimenti le celle che contengono lo slash non vengono visualizzate
Codice: Seleziona tutto
 Criteria3:="=*/*"


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: filtra più parole contemporaneamente

Postdi Flash30005 » 24/07/11 15:55

Aggiungo al post precedente una macro che può risolvere il tuo problema con excel 2003
La macro cancella la colonna B per utilizzarla (quindi attenzione a eventuali dati su questa colonna)
Adatta il nome del foglio al tuo foglio nella riga If Worksheets("foglio1").AutoFilterMode...
Codice: Seleziona tutto
Sub Calculon2()
Dim VSS(3) As String
If Worksheets("foglio1").AutoFilterMode Then Columns("A:B").AutoFilter
VSS(1) = "Min"
VSS(2) = "Concessione"
VSS(3) = "/"
Columns("B:B").ClearContents
For Ciclo = 1 To 3
VSC = VSS(Ciclo)
        With Range("A1:A3933")
            Set C = .Find(VSC, LookIn:=xlFormulas, LookAt:=xlPart)
                If Not C Is Nothing Then
                    firstAddress = C.Address
                    RC = C.Row
                    Range("B" & RC).Value = 1
                    Do
                        Set C = .FindNext(C)
                        If firstAddress = C.Address Then Exit Do
                        RC = C.Row
                        Range("B" & RC).Value = 1
                    Loop While Not C Is Nothing And C.Address <> firstAddress
                End If
        End With
Next Ciclo
Columns("A:B").AutoFilter Field:=2, Criteria1:="1"
End Sub


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: filtra più parole contemporaneamente

Postdi calculon » 24/07/11 17:21

nada...
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08

Re: filtra più parole contemporaneamente

Postdi Flash30005 » 24/07/11 18:04

calculon ha scritto:nada...

:?:
Di poche parole, eh?

Ti assicuro che la macro funziona perfettamente altrimenti non l'avrei postata
ma se tu stesso non vuoi risolvere il tuo problema... Figurati io! :D
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: filtra più parole contemporaneamente

Postdi Anthony47 » 25/07/11 01:13

In alternativa alla macro (vedi gli ultimi commenti di Flash sopra) puoi farlo con formule.
Se vuoi ad es 5 chiavi:
-scrivi le tue chiavi in I1:M1 (vuoto=ignora)
-se le tue stringhe sono in col A, allora in B2 metti la formula
Codice: Seleziona tutto
=SE(LUNGHEZZA(A2)-LUNGHEZZA(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(A2;$I$1;"");$J$1;"");$K$1;"");$L$1;"");$M$1;""))=LUNGHEZZA($I$1&$J$1&$K$1&$L$1&$M$1);1;"")
e copi verso il basso
Le righe che in B hanno 1 contengono tutte le chiavi inserite in I1:M1
-usando invece la formula
Codice: Seleziona tutto
=SE(LUNGHEZZA(A2)>LUNGHEZZA(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(A2;$I$1;"");$J$1;"");$K$1;"");$L$1;"");$M$1;""));1;"")
avrai 1 se la stringa in col A contiene almeno una delle chiavi.

Poi filtrerai col B.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: filtra più parole contemporaneamente

Postdi calculon » 04/08/11 18:52

Criteria3:="=*/*"

nooooooooooooooo! il nada era riferito a questa tua rispostaaaa!




Sinceramente il tuo secondo messaggio non l'avevo letto e difatti solo ora ho potuto apprezzare questa figata totalee!

Gratissimo, ti saluto
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08


Torna a Applicazioni Office Windows


Topic correlati a "filtra più parole contemporaneamente":


Chi c’è in linea

Visitano il forum: Gianca532011 e 77 ospiti