MACRO COPIA INCOLLA VALORI CONDIZIONATI

Anonimo
2013-06-25T16:22:26+00:00

Ho un problema con un foglio xls.

Nel foglio1 ho una serie di dati dove nella colonna F ci possono essere soltanto i seguenti dati : 1, o 2, o 3, o 4.

A questo punto avrei bisogno di fare in modo che tutte le righe che hanno nella colonna F il valore 1 si accodino al foglio2; tutte quelle che hanno nella colonna F il valore 2 si accodino al foglio 3; tutte quelle che hanno nella colonna F il valore 3 si accodino al foglio 4; tutte quelle che hanno nella colonna F il valore 4 si accodino al foglio 5.

Spero di essere stato chiaro e di trovare una soluzione; è da qualche giorno che sto impazzendo ....

Grazie

gp

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2013-06-27T09:32:46+00:00

Ciao Andrea,

la macro è perfetta ... l'ultimo accorgimento di cui avrei bisogno è che i dati del foglio1 nelle colonne A:I dovrebbero andare a finire nei fogli "paperino" etc nella colonne C:K

Spero di essere stato chiaro.

Grazie e saluti

Gianpiero

Ciao Gianpiero,

speriamo sia la volta buona.

Ciao,

Andrea.


Sub CopiaRighe1234()

Dim vbSheets As Variant

Dim rCell As Range

'---------- modifica qui i nomi dei fogli

vbSheets = Array("pippo", "pluto", "paperina", "paperino")

Application.ScreenUpdating = False

With ThisWorkbook

For Each rCell In .Worksheets("Foglio1").UsedRange.Columns(6).Cells

Select Case rCell.Value

Case 1 To 4

With .Worksheets(vbSheets(rCell.Value - 1))

'---------- 1a. copia tutto

'rCell.EntireRow.Copy .Cells(Rows.Count, 1).End(xlUp).Offset(1)

'---------- 2a. copia solo valori (intera riga)

'rCell.EntireRow.Copy

'.Cells(Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial xlPasteValues

'Application.CutCopyMode = False

'---------- 3a. copia solo valori (fino colonna I)

'rCell.Offset(, -5).Resize(, 9).Copy

'.Cells(Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial xlPasteValues

'Application.CutCopyMode = False

'---------- 4a. copia solo valori (fino colonna I e incolla da colonna C)

rCell.Offset(, -5).Resize(, 9).Copy

.Cells(Rows.Count, 3).End(xlUp).Offset(1).PasteSpecial xlPasteValues

Application.CutCopyMode = False

End With

End Select

Next

End With

End Sub


La risposta è stata utile?

0 commenti Nessun commento

8 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-06-26T07:58:48+00:00

    Ciao Andy,

    grazie della risposta, la macro fa tutto quello che io avevo chiesto.

    Però quando uno come me non è molto bravo, è facile accorgersi che non ho saputo fornire tutti gli elementi del problema; in realtà io dovrei copiare una riga che oltre alla colonna F ci sono altri valori fino alla colonna I e i fogli di destinazione hanno dei nomi tipo "pippo", "pluto", "paperina", paperino

    Ho inoltre notato che se si fossero delle formule incolla anche le formule; a me invece interesserebbe copiare nei fogli destinazione soltanto i valori

    Grazie,

    Gianpiero

    Ciao Gianpiero,

    ecco la sola copia dei soli valori, modifica i nomi dei fogli in base alle tue esigenze.

    Ciao,

    Andrea.


    Sub CopiaRighe1234()

    Dim vbSheets As Variant

    Dim rCell As Range

    '---------- modifica qui i nomi dei fogli

    vbSheets = Array("pippo", "pluto", "paperina", "paperino")

    Application.ScreenUpdating = False

    With ThisWorkbook

    For Each rCell In .Worksheets("Foglio1").UsedRange.Columns(6).Cells

    Select Case rCell.Value

    Case 1 To 4

    With .Worksheets(vbSheets(rCell.Value - 1))

    '---------- copia tutto

    'rCell.EntireRow.Copy .Cells(Rows.Count, 1).End(xlUp).Offset(1)

    '---------- copia solo valori

    rCell.EntireRow.Copy

    .Cells(Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial xlPasteValues

    Application.CutCopyMode = False

    End With

    End Select

    Next

    End With

    End Sub


    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-06-25T19:03:40+00:00

    Ciao Andy,

    grazie della risposta, la macro fa tutto quello che io avevo chiesto.

    Però quando uno come me non è molto bravo, è facile accorgersi che non ho saputo fornire tutti gli elementi del problema; in realtà io dovrei copiare una riga che oltre alla colonna F ci sono altri valori fino alla colonna I e i fogli di destinazione hanno dei nomi tipo "pippo", "pluto", "paperina", paperino

    Ho inoltre notato che se si fossero delle formule incolla anche le formule; a me invece interesserebbe copiare nei fogli destinazione soltanto i valori

    Grazie,

    Gianpiero

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-06-25T18:50:26+00:00

    Oppure utilizzando il filtro.

    Ciao,

    Andrea.


    Sub CopiaRighe1234()

    Dim rDestination As Range

    Dim i As Long

    On Error Resume Next

    With ThisWorkbook

    For i = 1 To 4

    Set rDestination = .Worksheets("Foglio" & i + 1).Cells(Rows.Count, 1).End(xlUp).Offset(1)

    With .Worksheets("Foglio1").UsedRange

    .AutoFilter

    .AutoFilter 6, CStr(i)

    .Copy rDestination

    .AutoFilter

    End With

    Next

    End With

    End Sub


    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2013-06-25T18:21:18+00:00

    Ho un problema con un foglio xls.

    Nel foglio1 ho una serie di dati dove nella colonna F ci possono essere soltanto i seguenti dati : 1, o 2, o 3, o 4.

    A questo punto avrei bisogno di fare in modo che tutte le righe che hanno nella colonna F il valore 1 si accodino al foglio2; tutte quelle che hanno nella colonna F il valore 2 si accodino al foglio 3; tutte quelle che hanno nella colonna F il valore 3 si accodino al foglio 4; tutte quelle che hanno nella colonna F il valore 4 si accodino al foglio 5.

    Spero di essere stato chiaro e di trovare una soluzione; è da qualche giorno che sto impazzendo ....

    Grazie

    gp

     

    Ciao,

    prova così.

    Ciao,

    Andrea.


    Sub CopiaRighe1234()

    Dim rCell As Range

    With ThisWorkbook

    For Each rCell In .Worksheets("Foglio1").UsedRange.Columns(6).Cells

    Select Case rCell.Value

    Case 1 To 4

    With .Worksheets("Foglio" & rCell.Value + 1)

    rCell.EntireRow.Copy .Cells(Rows.Count, 1).End(xlUp).Offset(1)

    End With

    End Select

    Next

    End With

    End Sub


    La risposta è stata utile?

    0 commenti Nessun commento