Discussione:
come copiare valori di una intera riga in excel con formula
(troppo vecchio per rispondere)
Sam
2010-01-24 14:57:45 UTC
Permalink
Salve!
Avrei la necessità di copiare un certo numero di celle contigue es A1:H1 dal
foglio1 al Foglio2 solo se in una determinata cella della stessa riga es B1
c'è un determinato valore o stringa. Si può fare?

Es: Se in Foglio1 B1 = "arance" mi copia l'intera riga, in questo caso A1:H1
nel foglio2.

Grazie anticipatamente.
Sam
Mauro Gamberini
2010-01-24 18:01:33 UTC
Permalink
Post by Sam
Avrei la necessità di copiare un certo numero di celle contigue es A1:H1
dal foglio1 al Foglio2 solo se in una determinata cella della stessa riga
es B1 c'è un determinato valore o stringa. Si può fare?
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
Sam
2010-01-24 22:05:12 UTC
Permalink
Post by Mauro Gamberini
Puoi specificare se
1) è una tabella o un'unica riga
(quindi in una tabella devi valutare
più righe)?
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.
Post by Mauro Gamberini
2) vuoi farlo via codice?
Preferirei senza usare filtri e copia/incolla come mi è stato suggerito da
un amico.
Post by Mauro Gamberini
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
Mauro Gamberini
2010-01-25 08:41:58 UTC
Permalink
Post by Sam
Post by Mauro Gamberini
2) vuoi farlo via codice?
Preferirei senza usare filtri e copia/incolla come mi è stato suggerito da
un amico.
Sarebbe interessante sapere la logica del tuo amico
e come risolverebbe lui la cosa...
Post by Sam
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.
--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/excelit/threads
Sam
2010-01-26 12:50:35 UTC
Permalink
Grazie per l'aiuto.
Oggi vedo vome funziona !

Grazie ancora.

Sam
Post by Mauro Gamberini
Post by Sam
Post by Mauro Gamberini
2) vuoi farlo via codice?
Preferirei senza usare filtri e copia/incolla come mi è stato suggerito
da un amico.
Sarebbe interessante sapere la logica del tuo amico
e come risolverebbe lui la cosa...
Post by Sam
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
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
http://www.maurogsc.eu/esemping10/filtracopia.zip
Grazie per l'attenzione.
--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/excelit/threads
Mauro Gamberini
2010-01-26 13:41:50 UTC
Permalink
Post by Sam
Oggi vedo vome funziona !
Grazie per il riscontro.
Fai sapere.
--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/excelit/threads
m***@gmail.com
2013-12-13 18:00:43 UTC
Permalink
Salve,scusate se mi intrometto in questa discussione ma avrei un problema simile da risolvere e non so come poter fare: in pratica ho una tabella nel foglio 1 colonne dalla "a" alla "l"),di cui la colonna "h" contiene le iniziali di un operaio (posso essere 5 valori diversi) e la colonna "l" contiene la data di effettuazione di una determinata operazione.
Sapreste indicarmi (oppure,se non sono troppo approfittatore,fare un file test come ho visto qui sopra)il codice per una macro che mi copi,solo quando nella colonna "l" è presente la data (e quindi l'operazione è stata effettuata dall'operaio) in altri 5 fogli le righe contenenti ciascuna un determinato codice (per esempio,nel foglio 2 le righe che contengono le iniziali dell'operaio 1,nel foglio 3 quelle dell'operaio 2,etc..). Sarebbe,detta in parole povere, una suddivisione delle operazioni compiute distinte per operaio, mentre nel foglio 1 sono presenti tutte le operazioni assegnate. Grazie mille
Continua a leggere su narkive:
Loading...