Valutazione 4.87/ 5 (100.00%) 5838 voti

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
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
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
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: 13892
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
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
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
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
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
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
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
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
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
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: 13892
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: Nessuno e 7 ospiti