Es: Se in Foglio1 B1 = "arance" mi copia l'intera riga, in questo caso A1:H1
nel foglio2.
Grazie anticipatamente.
Sam
Puoi specificare se
1) � una tabella o un'unica riga
(quindi in una tabella devi valutare
pi� righe)?
2) vuoi farlo via codice?
3) hai gi� considerato di filtrare i tuoi dati
per la colonna B?
Grazie.
--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/excelit/threads
Si devo valutare pi� righe di una tabella che corrispondano ad un certo
valore nella colonna B e che mi vengno copiate tutte le righe corrispondenti
a quel valore in un altro foglio.
> 2) vuoi farlo via codice?
Preferirei senza usare filtri e copia/incolla come mi � stato suggerito da
un amico.
> 3) hai gi� considerato di filtrare i tuoi dati
> per la colonna B?
> Grazie.
Mi hanno consigliato anche di importare i dati in un database e creare delle
query o dei report a seconda del caso, ma preferirei poter utilizzare solo
excel perch� poi sui dati ci devo ancora lavorare su.
Grazie!!!
Sam
Sarebbe interessante sapere la logica del tuo amico
e come risolverebbe lui la cosa...
> Mi hanno consigliato anche di importare i dati in un database e creare
> delle query o dei report a seconda del caso, ma preferirei poter
> utilizzare solo excel perch� poi sui dati ci devo ancora lavorare su.
>
Usando i filti e un po' di vb e
presumendo la tua tabella nel Foglio1,
Range da A1 a Hn.
Il filtro viene effettuato sulla colonna B
e il dato da filtrare viene inserito tramite
una InputBox.
In codice va inserito in un modulo standard
(ALT+F11, Inserisci-->Modulo).
Per ritornare in Excel: ALT+F11
Per eseguire la macro:
ALT+F8, seleziona mCopia e premi: Esegui
Public Sub mCopia()
'dichiaro le variabili
Dim wk As Workbook
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim v As Variant
'inserisco il criterio di ricerca e impedisco
'lo sfarfallio del monitor
With Application
v = .InputBox("Inserire il criterio di ricerca.")
.ScreenUpdating = False
End With
'metto un riferimento al workbook
'che contiene il codice
Set wk = ThisWorkbook
'metto un riferimento ai fogli;
'Foglio1 dove ho la tabella da cui
'copiare i dati, Foglio2 dove voglio
'incollare i dati filtrati
With wk
Set sh1 = .Worksheets("Foglio1")
Set sh2 = .Worksheets("Foglio2")
End With
'eseguo il filtro/copia/incolla
With sh1
'metto il filtro automatico e gli passo
'come criterio quanto inserito nella
'InputBox
.Range("A1").AutoFilter Field:=2, _
Criteria1:=CStr(v)
'elimino tutti i dati presenti
'nel Foglio2
sh2.Cells.Clear
'copio/incollo
.Range("A1").CurrentRegion.SpecialCells( _
xlCellTypeVisible).Copy _
Destination:=sh2.Range("A1")
'tolgo il filtro
.Range("A1").AutoFilter
End With
'ripristino l'aggiornamento del monitor
With Application
.ScreenUpdating = True
End With
'Set a Nothing delle variabili oggetto
Set sh2 = Nothing
Set sh1 = Nothing
Set wk = Nothing
End Sub
Se(se) non devi cancellare i dati dal Foglio2
per ogni richesta, ma devi via via incolonnarli,
possiamo modificare la routine.
Va modificata secondoi tuoi riferimenti
per colonne e nomi dei fogli.
Nel caso non riesca, chiedi sempre
in questo thread. Grazie.
Qui(fra qualche minuto) trovi il file che ho utilizzato
per l'esempio:
http://www.maurogsc.eu/esemping10/filtracopia.zip
Grazie per l'attenzione.
Grazie ancora.
Sam
Grazie per il riscontro.
Fai sapere.