Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

come copiare un intera riga se una casella contiene un certo valore

1,036 views
Skip to first unread message

Emanuel Campra

unread,
Feb 28, 2012, 12:47:34 PM2/28/12
to
Buongiorno

io dovrei copiare dal foglio 1 al foglio 2 tutte le righe che
contengono un certo valore in una casella

faccio un esempio
se la colonna H contiene un certo nome, io vorrei che sul foglio due
mi apparissero solo le righe che contengono quel nome ( esattamente
come se usassi i filtri

Ho trovato questa risposta, ma che permette di filtrare per colonna B
con un range A1 Hn, io vorrei modificare la colonna per cui filto (K)
e il range (a1:Qn)

cosa devo modificare

grazie

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.

Mauro Gamberini

unread,
Feb 29, 2012, 7:01:35 AM2/29/12
to
"Emanuel Campra" ha scritto nel messaggio
news:09d26fac-893b-411c...@l1g2000vbc.googlegroups.com...

Buongiorno

io dovrei copiare dal foglio 1 al foglio 2 tutte le righe che
contengono un certo valore in una casella

faccio un esempio
se la colonna H contiene un certo nome, io vorrei che sul foglio due
mi apparissero solo le righe che contengono quel nome ( esattamente
come se usassi i filtri

Ho trovato questa risposta, ma che permette di filtrare per colonna B
con un range A1 Hn, io vorrei modificare la colonna per cui filto (K)
e il range (a1:Qn)

cosa devo modificare

<cut>
*************************


Modifica:

.Range("A1").AutoFilter Field:=2, _
Criteria1:=CStr(v)

Cosě:

.Range("A1").AutoFilter Field:=11, _
Criteria1:=CStr(v)

--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/

Emanuel Campra

unread,
Apr 22, 2012, 6:06:26 AM4/22/12
to
On 29 Feb, 14:01, "Mauro Gamberini"
<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> "Emanuel Campra"  ha scritto nel messaggionews:09d26fac-893b-411c...@l1g2000vbc.googlegroups.com...
>
> Buongiorno
>
> io dovrei copiare dal foglio 1 al foglio 2 tutte le righe che
> contengono un certo valore in una casella
>
> faccio un esempio
> se la colonna H contiene un certo nome, io vorrei che sul foglio due
> mi apparissero solo le righe che contengono quel nome ( esattamente
> come se usassi i filtri
>
> Ho trovato questa risposta, ma che permette di filtrare per colonna B
> con un range A1 Hn, io vorrei modificare la colonna per cui filto (K)
> e il range (a1:Qn)
>
> cosa devo modificare
>
> <cut>
> *************************
>
> Modifica:
>
> .Range("A1").AutoFilter Field:=2, _
>     Criteria1:=CStr(v)
>
> Così:
>
> .Range("A1").AutoFilter Field:=11, _
>     Criteria1:=CStr(v)
>
> --
> ---------------------------
> Mauro Gamberini
> Microsoft MVP - Excelhttp://www.riolab.org/http://www.maurogsc.eu/

Grazie,

io pero dovrei fare in modo che i dati dal folgio 2 non venissero
cancellati ma incolonnati

cosa devo fare
0 new messages