PDA

Visualizza versione completa : Filtraggio dati


Gabry
15-01-2009, 12.10.36
Ciao a tutti.
Volevo chiedervi una soluzione a questo problema:

Nel foglio1, ho una lista di tutti i lavori in corso. La struttura di questo foglio la seguente:
- In colonna "B" ho la descrizione generale del lavoro da eseguire, le righe sottostanti spiegano nel dettaglio il lavoro. L'elenco molto lungo, e la distinzione da un lavoro all'altro evidenziato da un "X" posta in colonna "H" quando si passa alla descrizione del lavoro successivo.
Quello che mi occorre fare estrarre ogni riga in cui in colonna "H" vi una "X", ed inserirla in successione nel foglio che ho denominato "Indice", in modo da formare una lista unica ed avere una supervisione dei lavori in corso senza vedere tutte le rgihe che ne spieghino il dettaglio.

Come mi seggerite di procedere?

Gergio
15-01-2009, 12.23.46
ti crei una macro?
Puoi avviare il registratore, fai un paio di estrazioni e poi, dopo averlo fermato, vai a vedere (e modificare) il codice che ti ha prodotto

Gabry
15-01-2009, 12.46.05
ti crei una macro?
Puoi avviare il registratore, fai un paio di estrazioni e poi, dopo averlo fermato, vai a vedere (e modificare) il codice che ti ha prodotto

effettivamente il metodo che ho utilizzato, purtroppo l'inconveniente che questo metodo mi impone un range fisso. Se utlizzo il registratore di Macro, e fisso il Range "B1:B100", mi rimane quello, la conseguenza che se oltrepasso la riga 100 con altre inserzioni, devo ogni volta andare a correggere a mano la macro. La macro l'ho inserite nell'eveto "Workbook_Open", ogni volta che apro il file, mi avvia la macro e mi fa il filtro dei dati da B1 a B100. Esiste un modo per dirgli di andare sempre a vedere fino all'ultima riga che contiene un dato?

Gergio, grazie comunuqe per l'intressamento al problema.

Se qualcuno sa darmi la soluzione e vuole correggere il codice ve lo allego qu sotto:

Private Sub Workbook_Open()
Selection.AutoFilter
Range("A1:H1").Select
Range("H1").Activate
Selection.AutoFilter Field:=8, Criteria1:="x"

Range("B2:B100").Select
Range("B100").Activate

Selection.Copy
Sheets("indice").Select
Range("B2").Select
ActiveSheet.Paste
Range("A1").Select
Sheets("sheet1").Select
Selection.AutoFilter Field:=8
Application.CutCopyMode = False
Range("A2").Select
ActiveWindow.SmallScroll Down:=-15
Range("A1:H1").Select
Selection.AutoFilter
Range("A1").Select
End Sub

Gabry
15-01-2009, 12.48.27
Come si fa ad eliminare un post????

Ne ho fatto uno di troppo per sbaglio!

pietrol
19-01-2009, 01.39.41
Ciao Gabry
quello che ti serve inserire nel codice una riga che automaticamente espanda la selezione a tutto l'elenco.
Seguendo il tuo codice:

Private Sub Workbook_Open()
Selection.AutoFilter
Range("A1:H1").Select
Range("H1").Activate
Selection.AutoFilter Field:=8, Criteria1:="x"
' ---quelle sotto sono le righe da togliere --
Range("B2:B100").Select
Range("B100").Activate
' ---quelle sopra sono le righe da togliere --
' ---quella sotto la riga da aggiungere --
Range("A1:H1").CurrentRegion.Select
' ---quella sopra la riga da aggiungere --


Ciao
pietrol

Gabry
19-01-2009, 09.28.07
Grazie del suggerimento Pietrol.

Ho comunque risolto inserendo questa soluzione nel punto in cui mi suggerivi la tua soluzione:

ultima = Range("B65536").End(xlUp).Row
Range("B2:B" & ultima).Select

La tua soluzione aveva l'inconveniente di copiarmi tutte le colonne del range, mentre questa mi copia ed incolla solo la colonna "B", ed la soluzione che serviva a me.

Grazie comunque per il tuo interessamernto.