aggiungere righe vuote



  • aggiungere righe vuote
    di elisa data: 06/12/2017 13:55:06

    Buongiorno a tutti, avrei bisogno di aiuto. Ho un file con 1000 righe ed ho bisogno di inserire 4 righe vuote sotto ogni riga piena. inoltre queste celle vuote devono contenere un quarto della differenza tra i valori contigui.
    Graazieee



  • di scherman data: 06/12/2017 15:07:52

    Ciao,
    ipotizzando il file abbia una intestazione, che le 1000 righe siano tutte piene, puoi inserire 4 righe vuote sotto ogni piena con questo ciclo for

    For i = 3 To 5000 Step 5
    Rows(Cells(i, 1).Row & ":" & Cells(i, 1).Row + 3).Insert
    Next

    Salta l'intestazione e la prima riga piena, dalla riga 3 inserisce 4 righe vuote saltandone 5.
    quindi inserisce le righe alla riga 3 - 8 - 13 - 18 e così via

    sicuramente c'è qualcosa di meglio ma a me è venuto in mente questo.



  • di elisa data: 10/12/2017 09:51:50

    Grazie mille funziona benissimo,però manca l'ultimo pezzo: le celle vuote devono esser riempite con un quarto della cella precedente.
    Ancora grazie



  • di patel data: 10/12/2017 18:32:13

    allega un file di esempio con i dati ed il risultato desiderato





  • di elisa data: 11/12/2017 10:40:34

    Non so se ho allegato bene il file: all'interno in colonna A e B i dati originali. In E e F gli stessi dati con in aggiunta 4 righe riempite con un quarto del valore precedente (o dei valori contigui)



  • di patel data: 11/12/2017 11:24:52

    prova questa
     
    Sub b()
    LR = Cells(Rows.Count, "A").End(xlUp).Row
    nr = 4
    For r = LR To 2 Step -1
      passo1 = (Cells(r, 1) - Cells(r - 1, 1)) / 5
      passo2 = (Cells(r, 2) - Cells(r - 1, 2)) / 5
      Range(Cells(r, 1), Cells(r + nr - 1, 2)).Insert Shift:=xlShiftDown
      For i = 0 To 4
        Cells(r + i, 1) = Cells(r - 1 + i, 1) + passo1
        Cells(r + i, 2) = Cells(r - 1 + i, 2) + passo2
      Next
    Next
    End Sub
    






  • di elisa data: 15/12/2017 23:23:41

    Scusate il ritardo...funzionano entrambe alla perfezione!!!
    Grazie milleee
    Ma posso farvi un'altra domanda? Se io volessi eliminare 4 righe, invece di aggiungerle, devo soltanto scrivere Delete invece di insert?
    Scusate



  • di patel data: 16/12/2017 08:23:02

    prima di fare la domanda perché non provi ? è così che si impara





  • di elisa data: 17/12/2017 12:49:48

    Veramente ho già provato,ma mi esegue l'operazione solo sulla prima riga.Ho fatto così la domanda solo per sapere se sto sbagliando la sintassi o altri.
    Grazie



  • di patel data: 17/12/2017 16:42:50

    quale codice stai provando ?





  • di elisa data: 17/12/2017 21:12:25

    Quello di Scherman,ma al posto di Insert metto Delete



  • di patel data: 18/12/2017 20:38:38

    a me sembra che funzioni, altrimenti allega file di esempio con dati e risultato desiderato
     
    Sub vb()
    LR = Cells(Rows.Count, "A").End(xlUp).Row
    For i = 1 To LR Step 4
    Rows(Cells(i, 1).Row & ":" & Cells(i, 1).Row + 3).Delete
    Next
    
    End Sub






  • di elisa data: 19/12/2017 10:18:45

    Scusate ancora, ultima prova poi non disturbo più: ho provato la macro, ma non sempre mi elimina le 4 righe. Aleego un file di prova, con pochi dati originali e accanto i dati "modificati". Vorrei che la prima riga fosse copiata, le successive 4 eliminate, la quinta copiata, le successive 4 eliminate e così via.
    Grazie e scusate



  • di patel data: 19/12/2017 13:14:12

    hai ragione
     
    Sub vb()
    LR = Cells(Rows.Count, "A").End(xlUp).Row
    For i = 4 To LR
    Rows(Cells(i, 1).Row & ":" & Cells(i, 1).Row + 3).Delete
    Next
    
    End Sub
    






  • di elisa data: 19/12/2017 14:46:11

    Perfetta!!! Grazie mille a tutti!!!!