COPIA VALORI RANGE



  • COPIA VALORI RANGE
    di phoenix11 (utente non iscritto) data: 08/11/2016 16:28:50

    Ciao ,

    ho dei valori così impostati:

    e.g.
    "A2"=12
    "A3"=22
    "A4"=26

    Dovrei copiare questi valori a partire dalla cella "B3" nel seguente modo:

    -a partire dalla cella B3 deve essere riportato in ogni cella sottostante il valore di "A2" per 12 volte. L'intervallo di "paste" sarà quindi: da "B3" a "B14"
    - a partire dalla cella successiva ("B15") deve essere riportato in ogni cella sottostante il valore di "A3" per 22 volte.L'intervallo di "paste" sarà quindi: da "B16" a "B36"
    -a partire dalla cella successiva ("B37") deve essere riportato in ogni cella sottostante il valore di "A4" per 26 volte.L'intervallo di "paste" sarà quindi: da "B37" a "B62"

    Ho difficoltà a cambiare il "Range" nel codice

    Grazie in anticipo




  • di Mister_x (utente non iscritto) data: 08/11/2016 17:15:57

    ciao

    esempio di sub in base hai tuoi dati postati

    in colonna A da a2 in poi i tuoi valori
    in colonna B da B3 il riporto dei tuoi valori pari al valore di cella A

    ciao

     
    Option Explicit
    Sub riporta()
    Dim i As Long, Nriga As Long
    Dim celleA As Range
    Dim VcelA As Variant
    Nriga = 3
    Set celleA = Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
    For Each VcelA In celleA
      For i = 1 To VcelA.Value
        Cells(Nriga, 2) = VcelA.Value
        Nriga = Nriga + 1
      Next i
    Next
      Set celleA = Nothing
    End Sub
    






  • di phoenix11 (utente non iscritto) data: 09/11/2016 11:24:40

    Grazie molte Mister_x, funziona perfettamente!

    Avrei un'aggiunta.. ho dei valori così impostati:
    "A2"=12 "D2"=4
    "A3"=22 "D3"=1
    "A4"=26 "D4"=3

    Nella colonna "C", sempre a partire da "C3", deve essere riportato il valore di "Dx" per lo stesso intervallo precedente e lo stesso numero di volte.
    Per chiarire:
    -a partire dalla cella C3 deve essere riportato in ogni cella sottostante il valore di "D2" per 12 volte["A2"=12]. L'intervallo di "paste" sarà quindi: da "C3" a "C14"
    - a partire dalla cella successiva ("C15") deve essere riportato in ogni cella sottostante il valore di "D3" per 22 volte. L'intervallo di "paste" sarà quindi: da "C16" a "C36"
    -a partire dalla cella successiva ("C37") deve essere riportato in ogni cella sottostante il valore di "D4" per 26 volte. L'intervallo di "paste" sarà quindi: da "C37" a "C62"

    Ho provato a duplicare la macro sostituendo imponendo i= ValueA ma non da il risultato che cerco.

    Grazie ancora



  • di Mister_x (utente non iscritto) data: 09/11/2016 12:22:39

    ciao

    aggiunta al tuo nuovo problema di riporto valori di colonna D in C

    ciao
     
    Option Explicit
    Sub riporta()
    Dim i As Long, Nriga As Long
    Dim celleA As Range
    Dim VcelA As Variant, VcelD As Variant
    Nriga = 3
    Set celleA = Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
    For Each VcelA In celleA
    VcelD = Cells(VcelA.Row, 4)
      For i = 1 To VcelA.Value
        Cells(Nriga, 2) = VcelA.Value
        Cells(Nriga, 3) = VcelD
        Nriga = Nriga + 1
      Next i
    Next
      Set celleA = Nothing
    End Sub
    






  • di phoenix11 (utente non iscritto) data: 10/11/2016 09:52:59

    Grande Mister_x! Funziona alla perfezione.

    Se hai voglia avrei un'altra integrazione ( mi dispiace non averle messe tutte in una volta ma sono comparse dopo):
    Sempre nella stessa macro nella colonna §E§, sempre a partire dalla cella §E3§, dovrebbero comparire i valori di serie da 1 al valore di §Ax§.

    Mi spiego meglio:
    e.g.
    §A2§=12 §D2§=4
    §A3§=22 §D3§=1
    §A4§=26 §D4§=3

    - Nel primo intervallo di §paste§, da §E3§ a §E14§ , i valori delle celle saranno i seguenti:
    §E3§=1 §E4§=2 §E5§=3 §E6§=4 §E7§=5 §E8§=6 §E9§=7 §E10§=8 §E11§=9 §E12§=10 §E13§=11 §E14§=12 [§A2§=12]
    - Nel secondo intervallo di §paste§, da §E15§ a §E36§ , i valori delle celle saranno i seguenti:
    §E15§=1 §E16§=2 §E17§=3 §E18§=4 ..........§E36§=22 [§A3§=22]
    - Nel terzo intervallo di §paste§, da §E37§ a §E62§ , i valori delle celle saranno i seguenti:
    §E37§=1 §E38§=2 §E39§=3 §E40§=4 ..........§E62§=26 [§A4§=26]



    Grazie ancora per l'aiuto di prima





  • di Mister_x (utente non iscritto) data: 10/11/2016 11:53:11

    ciao

    basta aggiungere un'altra riga di codice e prendere il valore della variabile (i) del ciclo for

    ciao
    PS ti ho cambiato i riferimenti di colonna in Cell() da numerici ad alfabetico per farti capire
    e consigliabile sempre usare il valore numerico in quanto si puo' modificare con semplici operazioni matamatiche
     
    Option Explicit
    Sub riporta()
    Dim i As Long, Nriga As Long
    Dim celleA As Range
    Dim VcelA As Variant, VcelD As Variant
    Nriga = 3
    Set celleA = Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row)
    For Each VcelA In celleA
    VcelD = Cells(VcelA.Row, "D")
      For i = 1 To VcelA.Value
        Cells(Nriga, "B") = VcelA.Value
        Cells(Nriga, "C") = VcelD
        Cells(Nriga, "E") = i
        Nriga = Nriga + 1
      Next i
    Next
      Set celleA = Nothing
    End Sub
    
    
    






  • di phoenix11 (utente non iscritto) data: 10/11/2016 12:17:36

    era davvero semplice in effetti

    grazie ancora per l'aiuto e la celerità!

    phoenix