Condividi:        

Macro per filtrare i dati

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

Macro per filtrare i dati

Postdi nestor71 » 05/07/16 12:45

Buon giorno a tutti sono nuovo del forum questo è il mio primo messaggio.
Ho un problema con una macro che ho creato per filtrare i dati di un foglio excel
Il codice è il seguente
Codice: Seleziona tutto
 Sub Macro1()
Sheets("Foglio1").Select
 Columns("C:C").Select      '<<< Colonna da usare per il filtro
    Selection.AutoFilter
    Selection.AutoFilter Field:=1, Criteria1:=Range("K1").Value
    Range("A1000).Select
    Selection.Copy
    Sheets("Foglio2").Select
    Range("A1").Select
     ActiveSheet.Paste
end sub 

Questo codice filtra i dati in base ad un valore della colonna C e lì copia sul foglio2, però vorrei che la macro filtri tutti i dati e li inserisca nel foglio2 a partire dalla prima colonna vuota, sapete se si può fare.
nestor71
Utente Junior
 
Post: 12
Iscritto il: 04/07/16 21:59

Sponsor
 

Re: Macro per filtrare i dati

Postdi alfrimpa » 05/07/16 13:58

Ciao Nestor

Secondo me faresti bene ad allegare il tuo file (senza dati sensibili) con la macro ed il risultato desiderato inserito manualmente dove tu vuoi.
Alfredo

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

Re: Macro per filtrare i dati

Postdi nestor71 » 05/07/16 18:43

Grazie per la risposta,
allego il link Dropbox del file
https://www.dropbox.com/s/6y2kqw77ms18ch9/Macro%20filtra%20dati.xlsm?dl=0
questo è solo un file di prova.
nestor71
Utente Junior
 
Post: 12
Iscritto il: 04/07/16 21:59

Re: Macro per filtrare i dati

Postdi alfrimpa » 05/07/16 19:05

Ciao Nestor

Non so se ho ben capito; ho modificato leggermente la tua macro e la vedi sotto

Codice: Seleziona tutto
Sub Macro1()
Dim lastcol As Long
Application.ScreenUpdating = False
lastcol = Worksheets("Foglio2").Cells(2, Columns.Count).End(xlToLeft).Column
    Sheets("Foglio1").Select
    Columns("C:C").Select      '<<< Colonna da usare per il filtro
    Selection.AutoFilter
    Selection.AutoFilter Field:=1, Criteria1:=Range("K1").Value
   Range("A1:E100000").Select
    Selection.Copy
    Sheets("Foglio2").Select
    Cells(2, lastcol + 1).Select
     ActiveSheet.Paste
      Worksheets("Foglio2").Columns("A:E").AutoFit
        Range("A1").Select
      Sheets("Foglio1").Select
      Application.CutCopyMode = False
      Selection.AutoFilter
       Range("A1").Select
  Application.ScreenUpdating = True
  End Sub


Prova un po' e fai sapere
Alfredo

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

Re: Macro per filtrare i dati

Postdi nestor71 » 05/07/16 19:39

Ho provato non è quello che intendevo, la macro filtra i dati solo della voce numero nove del filtro della collonna C, nel filtro della colonna C ci sono 22 voci io vorrei che filtra tutte le voci e mi inserisca i dati filtrati della prima voce dalla colonna A alla colonna E, i dati filtrati della seconda voce dalla colonna F alla colonna J e così via per tutte le voci della colonna C.
Grazie per l' aiuto.
nestor71
Utente Junior
 
Post: 12
Iscritto il: 04/07/16 21:59

Re: Macro per filtrare i dati

Postdi alfrimpa » 05/07/16 19:49

Allega un file in cui fai vedere il risultato desiderato sul foglio2 inserito manualmente perchè nin ho capito.
Alfredo

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

Re: Macro per filtrare i dati

Postdi nestor71 » 05/07/16 20:34

Nel file ho utilizzato la funzione filtro di excel , ho filtrato la prima voce e lo copiata nel foglio2 poi ho filtrato la seconda e lo copiata nel foglio2 poi ho filtrato la terza e lo copiata nel foglio2 poi ho filtrato la quarta e lo copiata nel foglio2, la macro dovrebbe fare la stessa cosa fino all' ultima voce.
https://www.dropbox.com/s/6y2kqw77ms18ch9/Macro%20filtra%20dati.xlsm?dl=0
nestor71
Utente Junior
 
Post: 12
Iscritto il: 04/07/16 21:59

Re: Macro per filtrare i dati

Postdi Anthony47 » 06/07/16 01:28

Ciao nestor71, benvenuto nel forum.
Da come l'ho capita nell'ultimo tuo mesaggio:
Codice: Seleziona tutto
Sub RePiazza()
Dim LastA As Long, dSh As Worksheet
Dim LastK As Long, lastCol As Long, I As Long
'
Set dSh = Sheets("Foglio2")                   '<<< Il foglio di Destinazione
dSh.Cells.ClearContents                       '!!! Vedi testo
Sheets("Foglio1").Select                      '<<< Il foglio Sorgente
LastA = Cells(Rows.Count, 1).End(xlUp).Row
lastCol = Range("Z2").End(xlToLeft).Column
'
Range("C:C").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
    "Z1"), Unique:=True
ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.Add Key:=Range("Z1"), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveSheet.Sort
    .SetRange Range("Z2:Z" & LastA)
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
LastK = Cells(Rows.Count, "Z").End(xlUp).Row
'
For I = 2 To LastK
    Range("C:C").AutoFilter Field:=1, Criteria1:=Cells(I, "Z")
    Range("A2").Resize(LastA, lastCol).Copy dSh.Range("A2").Offset(0, cc * (lastCol + 1))
    cc = cc + 1
Next I
Range("C:C").AutoFilter Field:=1
MsgBox "Completato..."
End Sub

La macro crea in colonna Z del foglio di origine l'elenco dei valori unici di colonna C, poi procede filtrando e copiando nel foglio di destinazione.
NB: Il foglio di destinazione viene azzerato senza preavviso a inizio macro.

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

Re: Macro per filtrare i dati

Postdi nestor71 » 06/07/16 12:25

Grazie, lo provo poi faccio sapere.
nestor71
Utente Junior
 
Post: 12
Iscritto il: 04/07/16 21:59

Re: Macro per filtrare i dati

Postdi nestor71 » 06/07/16 18:42

La macro crea in colonna Z del foglio di origine l'elenco dei valori unici di colonna C, poi procede filtrando e copiando nel foglio di destinazione.
NB: Il foglio di destinazione viene azzerato senza preavviso a inizio macro.

Grazie mille era proprio quello che cercavo adesso lo modifico secondo le mie esigenze.
nestor71
Utente Junior
 
Post: 12
Iscritto il: 04/07/16 21:59

Re: Macro per filtrare i dati

Postdi nestor71 » 06/07/16 22:43

La macro funziona perfettamente, adesso ho modificato la parte di codice
Codice: Seleziona tutto
Range("A2").Resize(LastA, lastCol).Copy dSh.Range("A2").Offset(0, cc * (lastCol + 1))

in
Codice: Seleziona tutto
Range("A2").Resize(LastA, lastCol).Copy dSh.Range("A2").Offset(0, cc * (lastCol + 6))

perchè nelle sei colonne che ho saltato voglio inserire delle formule tramite macro, per esempio se io voglio inserire una formula in tutte le celle della prima colonna che ho saltato partendo dalla riga numero cinque come posso fare.
Scusate ma non sono molto pratico di codice vba.
nestor71
Utente Junior
 
Post: 12
Iscritto il: 04/07/16 21:59


Torna a Applicazioni Office Windows


Topic correlati a "Macro per filtrare i dati":


Chi c’è in linea

Visitano il forum: Nessuno e 67 ospiti