Condividi:        

filtrare celle con un array di valori

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

filtrare celle con un array di valori

Postdi Ale75 » 26/07/18 11:34

Salve,

Ho definito un array contenente una lista di codici da filtrare ed ho applicato il codice sotto per filtrare le celle che contengono quei valori.
E fin qua funziona

Codice: Seleziona tutto
ActiveSheet.Range("$A$4:$CN$550").AutoFilter Field:=6, Criteria1:=Array(RobaDaFiltrare), Operator:=xlFilterValues


Il problema è che ho bisogno di inserire due codici nella stessa cella, perchè alcuni oggetti possono essere richiamati da due codici.

sembra pero che l'operatore "xlfilterValue" cerchi il valore esatto. Che operatore posso mettere per fare un filtro che "Contiene" un valore anche solo in parte invece che l'esatto valore?

grazie,
ale
Ale75
Utente Junior
 
Post: 47
Iscritto il: 31/03/17 08:42

Sponsor
 

Re: filtrare celle con un array di valori

Postdi Anthony47 » 26/07/18 14:59

Col parametro "Contiene" puoi usare solo 2 valori; se ne hai di piu' devi usare qualche altro artificio.
Ad esempio, se i dati da filtrare sono in colonna H, crea l'elenco dei valori da cercare in CQ1:CQ5.
Poi in una colonna libera, a partire da riga 2, metti la formula
Codice: Seleziona tutto
=--O(VAL.NUMERO(RICERCA($CQ$1:$CQ$5;H2)))

Copia poi la formula verso il basso.

Nessuna cella dell'intervallo Q1:Q5 deve essere vuota, quindi se hai meno valori da filtrare modifica la formula per adattarla all'intervallo compilato; oppure riempi le celle vuote con una stringa "impossibile", tipo #§#

La formula ti restituira' 1, se il valore di colonna H contiene uno dei valori in CQ1:CQ5; oppure 0.

Ti bastera' quindi filtrare il valore 1 in questa nuova colonna, per individuare le righe cercate.

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

Re: filtrare celle con un array di valori

Postdi Ale75 » 30/07/18 08:50

grazie, ma non ho capito.

Allego un file di esempio.
nella pagina DB c'è il database per il test e nella pagina DB_modificato ho provato a impostare la formula suggerita
in Home definisco i codici del filtro.
in Modulo1 ho messo la macro che ho realizzato, che funziona SOLO se nella cella ho un solo codice
In DB ho evidenziato in giallo le celle conteneti i codici doppi

mi puoi dare qualche dritta? vorrei eviater di duplicare i campi

grazie
Alessandro
Ale75
Utente Junior
 
Post: 47
Iscritto il: 31/03/17 08:42

Re: filtrare celle con un array di valori

Postdi Ale75 » 30/07/18 09:06

Ale75
Utente Junior
 
Post: 47
Iscritto il: 31/03/17 08:42

Re: filtrare celle con un array di valori

Postdi Anthony47 » 30/07/18 14:21

Il link mi risponde:
Yikes, that page can’t be found.

Verifica che sia corretto...
Avatar utente
Anthony47
Moderatore
 
Post: 19439
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: filtrare celle con un array di valori

Postdi Ale75 » 30/07/18 14:33

in allegato il link corretto

https://we.tl/s-IoV3ytRNJq
Ale75
Utente Junior
 
Post: 47
Iscritto il: 31/03/17 08:42

Re: filtrare celle con un array di valori

Postdi Anthony47 » 31/07/18 13:08

File scaricato (era corrotto e l'ho ripristinato, spero integralmente)
Ora con questi dati quale e' il problema?
Avatar utente
Anthony47
Moderatore
 
Post: 19439
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: filtrare celle con un array di valori

Postdi Ale75 » 02/08/18 15:46

riallego il link corretto

Codice: Seleziona tutto
https://we.tl/hGw15W6xr7


il punto è che non riesco a fare è selezionare i campi in giallo, dove ho due codici corrispondenti ad una stessa riga.
c'è un modo per poterlo fare agendo solo sulle macro?
Ale75
Utente Junior
 
Post: 47
Iscritto il: 31/03/17 08:42

Re: filtrare celle con un array di valori

Postdi Anthony47 » 02/08/18 22:43

Ancora non sono certo...
Se vuoi poter filtrare mettiamo la riga 4 sia per il valore AA1 che AA2 allora devi usare il filtro automatico, scegliendo Filtri per testo e poi usando la condizione "Contiene..."
Se esegui l'operazione mentre registri una macro avrai la relativa sintassi.

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

Re: filtrare celle con un array di valori

Postdi Ale75 » 03/08/18 08:58

cerco di spiegare meglio.

il file di origine è ovviemente molto piu grande ed il filtro che applico seleziona contemporaneamente circa 20 - 25 codici, che ho messo in un Array. Nell'esempio allegato l'ho chiamato "FiltraPrim" e "Filtra2", e che è inserito nel codice

Codice: Seleziona tutto
ActiveSheet.Range("$A$4:$C$1000").AutoFilter Field:=1, Criteria1:=Array(FiltraPrim), Operator:=xlFilterValues


Il sistem a funziona correttamente, però se nell'array sono presenti valori come ad es AA2 che è incluso in una cella con un doppio codice, il filtro non lo seleziona.

la domanda è:
- esiste um modo per far selezionare con un array di codici anche le celle con doppi codici oppure è meglio se duplico le riche nel file di origine?
Ale75
Utente Junior
 
Post: 47
Iscritto il: 31/03/17 08:42

Re: filtrare celle con un array di valori

Postdi Anthony47 » 03/08/18 17:59

Allora torniamo alla mia prima risposta, che rimodulo e correggo come segue:
Come sono organizzati i dati, non puoi usare "filtra per valore esatto" (che consente anche l'uso di un array di valori); devi invece usare il filtro col parametro "Contiene". Ma in questo caso puoi usare max 2 valori; se ne hai di piu' devi usare qualche altro artificio.
Ad esempio, se i dati da filtrare sono in colonna A e i valori da verificare sono in foglio Home!$C$5:$C$8, allora in una colonna libera, a partire da riga 2, metti la formula
Codice: Seleziona tutto
=--O(VAL.NUMERO(RICERCA(Home!$C$5:$C$8;A2)))

Va confermata con Contr-Maiusc-Enter (non il solo Enter) e quindi copiata verso il basso

Nessuna cella dell'intervallo su foglio Home deve essere vuota, quindi se hai meno valori da filtrare modifica la formula per adattarla all'intervallo compilato; oppure riempi le celle vuote con una stringa "impossibile", tipo #§#

La formula ti restituira' 1, se il valore di colonna H contiene uno dei valori in dell'elenco; oppure 0.

Ti bastera' quindi filtrare il valore 1 in questa nuova colonna, per individuare le righe cercate.

Rispetto alla prima risposta ho cercato di essere piu' esplicito in alcune informazioni e ho specificato che la formula data deve essere inserita in forma di matrice (uso di Contr-Maiusc-Enter), altrimenti il risultato rischia di essere sballato.

TUTTAVIA la mia opinione e' che le chiavi di accesso dovrebbero essere uniche; se un articolo ha due chiavi allora sarebbe meglio duplicare le righe, come anche tu hai cominciato a pensare...

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

Re: filtrare celle con un array di valori

Postdi Ale75 » 07/08/18 07:29

Grazie Anthony,
credo che come da tu sugegrimento duolichero le righe con un po di lavoro amanuense.

grazie ancora,
Ale.
Ale75
Utente Junior
 
Post: 47
Iscritto il: 31/03/17 08:42


Torna a Applicazioni Office Windows


Topic correlati a "filtrare celle con un array di valori":


Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti