Copiare solo celle piene



  • Copiare solo celle piene
    di Franc. data: 30/05/2017 15:11:22

    Salve a tutti,
    avrei bisogno di copiare solo le celle piene delle colonne T, U, V, W, contenute nel Foglio1, nelle colonne A, B, C, D, del foglio 3.
    Le celle da copiare nel foglio 1 dovrebbero partire dalla riga 2 e copiare nel foglio 3 dalla riga 5.

    Il risultato in foglio3 dovrebbero una serie di righe piene consecutive.

    grazie



  • di alfrimpa data: 30/05/2017 15:39:57

    Franc allega un file di esempio con i dati (fittizi) sul foglio1 e sul foglio3 inserisci a mano il risultato desiderato.

    Ho visto anche i file allegati alla discussione "Calendario giorni lavorativi" ma le colonne T, U e V del foglio1 sono vuote.

    Alfredo





  • di Franc. data: 30/05/2017 15:47:13

    allegato
    grazie



  • di alfrimpa data: 30/05/2017 15:50:36

    Scusa ma tu parli di copiare i valori delle colonne T, U, V e W del foglio1 ma queste, sul file che hai allegato sono vuote e il foglio3 è completamente compilato con formule.

    Non è che hai sbagliato file?

    Allega un file coerente con la tua richiesta e mostra il risultato (sul foglio3) che vuoi ottenere inserendolo a mano.

    Alfredo





  • di Franc. data: 30/05/2017 15:56:44

    fatto



  • di alfrimpa data: 30/05/2017 16:04:10

    Sul foglio3 c'è tutt'altro che il risultato desiderato inserito a mano.

    Alfredo





  • di alfrimpa data: 30/05/2017 16:14:47

    Comunque prova la macro che vedi sotto che va a copiare sul foglio2 che era vuoto.

    Alfredo
     
    Sub copia()
    Dim ur As Long
    Dim lr As Long
    Dim rng As Range
    Dim cel As Range
    ur = Sheets("Foglio1").Cells(Rows.Count, "T").End(xlUp).Row
    Set rng = Sheets("Foglio1").Range("T2:t" & ur)
    For Each cel In rng
    lr = Sheets("Foglio2").Cells(Rows.Count, "A").End(xlUp).Row
        If cel.Value <> "" Then
            Sheets("Foglio1").Range(Cells(cel.Row, "T"), Cells(cel.Row, "W")).Copy Destination:=Sheets("Foglio2").Cells(lr + 1, 1)
        End If
    Next cel
    End Sub
    






  • di Franc. data: 30/05/2017 16:24:36

    il debug mi da errore
    qui
    Sheets("Foglio1").Range(Cells(cel.Row, "T"), Cells(cel.Row, "W")).Copy Destination:=Sheets("Foglio2").Cells(lr + 1, 1)



  • di alfrimpa data: 30/05/2017 16:38:19

    Prova con questa
     
    Sub copia()
    Dim i As Integer
    Dim ur As Long
    Dim lr As Long
    Dim rng As Range
    Dim cel As Range
    ur = Sheets("Foglio1").Cells(Rows.Count, "T").End(xlUp).Row
    Set rng = Sheets("Foglio1").Range("T2:t" & ur)
    For Each cel In rng
    lr = Sheets("Foglio2").Cells(Rows.Count, "A").End(xlUp).Row
        If cel.Value <> "" Then
            For i = 1 To 4
                Sheets("Foglio2").Cells(lr + 1, i).Value = cel.Offset(0, i - 1)
            Next i
        End If
    Next cel
    End Sub
    






  • di Franc. data: 30/05/2017 16:42:33

    perfetto
    grazie mille



  • di Franc. data: 30/05/2017 16:48:39

    Scusami ho un problema:
    la macro funziona, ma nel foglio originale scrive i dati sotto la tabella formattata a partire dalla cella 39
    non capisco
    allego (forse prima ti risultava vuoto perchè facendo partire la macro elenca file non trovava la cartella di riferimento)



  • di Franc. data: 30/05/2017 16:59:24

    risolto, ho dato un cancella nelle celle e funziona

    grazie ancora



  • di Franc. data: 30/05/2017 18:05:32

    Ho un problema, la macro scrive nelle righe sotto se sono occupate dal testo, a me servirebbe sovrascriverle
    grazie



  • di alfrimpa data: 30/05/2017 18:24:51

    Non ho capito

    La macro va a scrivere su un foglio che deve essere essere vuoto tranne l'intestazione dei campi

    Alfredo