Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

array dinamico per Autofilter

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

array dinamico per Autofilter

Postdi Ale75 » 03/04/17 14:42

Buongiorno a tutti,

ho un problema con una macro che non riesco a risolvere.

Nella pagina “Prima Pagina” seleziono una serie di oggetti con dei menu a tendina (Range B5-B14), ed associo questi oggetti a dei cassetti (Range C5:F14) usando un tabella dove ado ogni colonna da Ca F corrisponde un cassetto e gli oggetti in esso contenuti (Il criterio di selezione puo essere modificato) Notare che Un cassetto può contenere piu oggetti ed un oggetto puo essere contenuto in piu cassetti.


Gli oggetti sono poi associati adi una lista contenuta in una pagina “ListaOggetti” (Colonna A= Oggetti, Colonna B colore, Colonna C= numero)

Vorrei creare una macro che mi consentisse di contare il numero di oggetti di un determinato colore contenuti in ogni cassetto e riempire l’output finale.
Il problema è che non so come creare un filtro che agisca su “ListaOggetti” filtrando appunto gli oggetti che ho definito per un determinato caasetto.
Ad esempio per il “Cassetto Medio” dovrei creare un comando del tipo

Sheets("Lista Oggetti”).Select
ActiveSheet.Range(A2:E9).AutoFilter Field:=Level, Criteria1:=Array("Pere", "formaggio"), Operator:=xlFilterValu

ho provato a vreare un array con dimensione variabile, ma non so come associare in nomi.

Qualche idea?
Mi sono arenato :-(
grazie
Ale75
Utente Junior
 
Post: 33
Iscritto il: 31/03/17 08:42

Sponsor
 

Re: array dinamico per Autofilter

Postdi alfrimpa » 03/04/17 17:47

La prima cosa che mi viene da consigliarti è di allegare un file di esempio con dati, spiegazione e risultaot desiderato inserito manualmente.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: array dinamico per Autofilter

Postdi Ale75 » 04/04/17 08:56

Purtroppo non posso caricare file da servizi di sharing, comunque semplificando il problema è questo:
posso avere un massimo di tre variabili contenenti tre nomi diversi che possono essere o non essere selezionati tutti e tre
Var1=pippo
Var2=pluto
Var3=paperino

es seleziono solo due variabili Va1 e Var3 (manualmente) e vorrei trovare un modo per avere un comando tipo

ActiveSheet.Range(A2:E9).AutoFilter Field:=Level, Criteria1:=Array(Var1, Var3), Operator:=xlFilterValu



come posso fare?
Grazie,
Ale
Ale75
Utente Junior
 
Post: 33
Iscritto il: 31/03/17 08:42

Re: array dinamico per Autofilter

Postdi alfrimpa » 04/04/17 17:42

Qui non chiediamo i file di esempio per carpire chissà quali segreti ma solo per non dover ricreare ex novo lo scenario che l'utente ha già (con alta probabilità di errore) e potervi testare eventualmente le macro.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: array dinamico per Autofilter

Postdi Anthony47 » 05/04/17 00:09

Da come l'ho capita, stai cercando come si fa questo:
Dichiarazione array:
Codice: Seleziona tutto
Dim MArr(1 To 4)        'dichiarazione array

Compilazione array:
Codice: Seleziona tutto
Erase MArr                         'Cancellazione e compilazione array
MArr(1) = Var1
MArr(2) = Var1

In alternativa potresti caricare direttamente i valori in MArr (max 4 valori):
Codice: Seleziona tutto
MArr(1) = "pippo"
MArr(2) = "pluto"



Poi per filtrare userai
Codice: Seleziona tutto
    ActiveSheet.Range("$C$1:$D$2143").AutoFilter Field:=2, Criteria1:=MArr, Operator:=xlFilterValues


E se non e' cosi' allora attendiamo un file di esempio su cui ragionare insieme.

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


Torna a Applicazioni Office Windows


Topic correlati a "array dinamico per Autofilter":


Chi c’è in linea

Visitano il forum: Nessuno e 29 ospiti