copiare colonna VBA



  • copiare colonna VBA
    di tommy91 (utente non iscritto) data: 12/07/2015 15:57:57

    Salve a tutti, vorrei riuscire a creare una macro che mi copi una colonna di dati in un'altra, utilizzando un ciclo for next. Purtroppo anche dopo molti tentativi il massimo che riesco a ottenere è la cancellazione della colonna che vorrei copiare.
    In sostanza vorrei prendere dei numeri dalla cella F5 alla cella F44 e copiarli dalla J5 alla J44.
    Nella sezione metto i codici VBA che ho provato. Tutte le varianti mi danno quei due risultati
    Se riesco a capire come si fa, metto un allegato. Grazie delle risposte!

     
    1- mi cancella la cella F5
    
    Cells(5,6) = a
    Cells(44,6) = b
    For j = a to b
    Cells(5,10) = a
    Next j
    
    2- mi cancella tutta la colonna da copiare senza fare altro
    
    for j = 1 to 40
    cells(j+4,6) = cells(j+4,10)
    next j
    



  • di alfrimpa data: 12/07/2015 16:09:03

    Ciao Tommy

    Onestamente non si capisce molto quello che concretamente vuoi fare.

    Se si tratta di copiare l'intervallo F5:F44 in J5 non basta l'istruzione qui sotto?

    Per allegare un file hai in alto/basso a destra il relativo pulsante.

    Alfredo
     
    Range("F5:F44").Copy Destination:=Range("J5")






  • di Albatros54 data: 12/07/2015 16:14:28

    Cells(5, 6) = a '<== Con questa riga di codice stai dicendo a VBA "prendi
    'il valore di a e mettilo nella cella(5,6)
    Cells(44, 6) = b '<== Con questa riga di codice stai dicendo a VBA "prendi
    'il valore di a e mettilo nella cella(44,6)
    For j = a To b '<== j va da a(valore vuoto) to b(valore vuoto)
    Cells(5, 10) = a
    Next j


    For j = 1 To 40
    Cells(j + 4, 6) = Cells(j + 4, 10)
    Next j

    @ alfredo secondo me bisogna condurlo per mano





  • di tommy91 (utente non iscritto) data: 12/07/2015 16:22:30

    grazie delle risposte velocissime. diciamo che "condurre per mano" è perfettissimo nel mio caso :)

    comunque, la risposta di alfredo è perfetta, nel senso che mi dà esattamente quanto richiesto.
    Però io vorrei riuscire a fare la stessa cosa usando un ciclo for-next. è possibile?



  • di alfrimpa data: 12/07/2015 16:30:08

    Cit. "@ alfredo secondo me bisogna condurlo per mano"

    Gioacchino la prossima settimana saró in ferie (quindi senza pc) per cui ti lascio volentieri il compito di "tutoraggio" -:) -:)

    Alfredo





  • di alfrimpa data: 12/07/2015 16:33:25

    Tommy ma se il mio suggerimento, hai detto, ti calza a pennello perchè lo vuoi fare con un ciclo For? Non è importante il risultato piuttosto che il modo?

    Dal file vedo che si tratta di un esercizio che devi eseguire e non mi sembra "bello" chiedere aiuto su un forum per questa finalità.

    Perdonami ma io la penso così.

    Alfredo





  • di tommy91 (utente non iscritto) data: 12/07/2015 16:34:38

    in realtà no, perché questa è una parte di un esercizio in preparazione di un esame dove mi è espressamente richiesto il ciclo for :(



  • di Albatros54 data: 12/07/2015 16:37:05

    incolla il codice sotto in un modulo di VBA

    @alfredo " Cerco allievi e trovo Professori" vecchio proverbio"
    Ciao
    gioacchino
     
    Public Sub prova()
        Dim lUltRiga As Integer
        lUltRiga = Range("f" & Rows.Count).End(xlUp).Row    'trova l'utima cella della colonna F che contiene un valore
        For a = 1 To lUltRiga 'cicla da 1 a valore ultima riga
            Cells(a, 10) = Cells(a, 6) 'copia il valore della cella di DX in quella di SN
        Next
    End Sub
    






  • di tommy91 (utente non iscritto) data: 12/07/2015 16:48:11

    alfredo, non è un esercizio che devo fare. è un esercizio che voglio fare per prepararmi a un esame che al momento non so affrontare. ho chiesto una mano perché non è il mio campo, non credevo ci fosse nulla di male.

    gioacchino, grazie 1000! funziona perfettamente.

    grazie a tutti, ciao!



  • di Marius44 data: 12/07/2015 16:57:14

    Ciao Tommy
    Ciao "ragazzi", mi permetto entrare di soppiatto. Visto che Tommy vuole complicarsi la vita, accontentiamolo.
    La formula di alfrimpa è la più immediata
    La formula di albatros è più lunga ma "si riferisce a tutta la colonna".
    Non ho scaricato il tuo file ma se per forza vuoi il ciclo for ... next, beh, prova quello sotto relativo alle celle da te indicate ("dalla cella F5 alla cella F44 e copiarli dalla J5 alla J44") non so se siano la prima o l'ultima ma si riferisce SOLO a quel range.
    Ciao a tutti,
    Mario
     
    For i = 5 to 44
    cells(i,10) = cells(i,6)
    next i