macro riga



  • macro riga
    di claudio (utente non iscritto) data: 04/11/2017 18:49:05

    Ciao a tutti,

    Avrei un problema, vorrei creare una macro che aggiungesse una riga qualora si presenta un valore mancante. Mi spiego meglio:
    Ho due colonne C e D, dove nella colonna C ci sono dei valori crescenti, alcune volte però in questa colonna alcuni valori vengono saltati (es. 0149449), per cui vorrei che si aggiungesse una riga dove compaia nella colonna C il valore mancante (es. 0149449) mentre nella colonna D un valore fisso (es. 88888888AAA88)

    Es.
    colonna C ..... Colonna D
    0149446 8007842657371
    0149447 4957812461061
    0149448 5025232517404
    0149450 8017709132477
    0149451 4901780580866
    0149452 4242002494654
    0149453 024066040596
    0149454 8032976044926


    il risultato che vorrei
    0149446 8007842657371
    0149447 4957812461061
    0149448 5025232517404
    0149449 88888888AAA88.................... riga aggiunta
    0149450 8017709132477
    0149451 4901780580866
    0149452 4242002494654
    0149453 024066040596
    0149454 8032976044926

    grazie ancora per l'aiuto

    p.s. i volori delle colonne C e D superano i 600000



  • di patel data: 04/11/2017 18:58:28

    allega un file di esempio con max 100 righe e con anche il risultato desiderato
    viene saltato un solo valore o anche più di uno consecutivi ?





  • di Zer0Kelvin data: 04/11/2017 21:09:47

    Ciao.
    Questo è uno spunto per la tua macro, presumendo che i dati comincino a riga 1 e siano in colonna C e D
     
    Sub Inserisci()
    Const ValoreFisso = "88888888AAA88"
    Dim Riga As Long
        Riga = 1
        Do While Cells(Riga + 1, 3) <> ""
            If Cells(Riga + 1, 3) <> Cells(Riga, 3) + 1 Then
                Range(Cells(Riga + 1, 3), Cells(Riga + 1, 4)).Insert xlDown
                Cells(Riga + 1, 3) = Cells(Riga, 3) + 1
                Cells(Riga + 1, 4) = ValoreFisso
            End If
            Riga = Riga + 1
        Loop
    End Sub



  • di claudio (utente non iscritto) data: 05/11/2017 12:04:43

    Grazie per le risposte ma purtroppo credo che i valori sono tanti che excel si bocca e non risponde.

    altrimenti è possibile aggiungere una riga dopo il valore 0148448 inserendo questi dati:

    0149449 nella colonna C mentre 88888888AAA88 nella colonna D



  • di patel data: 05/11/2017 12:24:03

    se non alleghi un file di esempio come ti ho chiesto è difficile poterti aiutare concretamente





  • di claudio (utente non iscritto) data: 05/11/2017 17:59:22

    ho spezzato il file in 3 e le ho allegati

    Grazie ancora



  • di patel data: 05/11/2017 19:44:25

    Claudio, se vuoi aiuto devi aiutare noi, ti ho chiesto un file di esempio di 100 righe, tu ne hai allegati 3 con migliaia di righe. Occorre un file con evidenziate le righe mancanti, inoltre non hai detto se viene saltato un solo valore o anche più di uno consecutivi.
    Leggi attentamente cosa ti viene chiesto, altrimenti poi uno si scoccia e ti abbandona.





  • di claudio (utente non iscritto) data: 05/11/2017 23:26:07

    Ciao Patel, scusami se non mi spiego bene, puoi prendere come esempio la terza parte dove manca la riga con il valore 0149449, inoltre viene saltato alcune volte solo un valore mai consecutivo.

    spero d essere stato chiaro.

    Grazie



  • di claudio (utente non iscritto) data: 05/11/2017 23:27:18


    Ciao Patel, scusami se non mi spiego bene, puoi prendere come esempio la terza parte dove manca la riga con il valore 0149449, inoltre viene saltato alcune volte solo un valore ma mai consecutivo tra loro.

    spero d essere stato chiaro.

    Grazie



  • di patel data: 06/11/2017 12:22:31

    prova questa
     
    Sub a()
    r = 3
    Columns("C:D").NumberFormat = "@"
    While Cells(r, "C") <> ""
      If Cells(r, "C") - Cells(r - 1, "C") = 2 Then
        Rows(r).Insert
        Cells(r, "C") = Format(Cells(r - 1, "C") + 1, "0000000")
        Cells(r, "D") = "88888888AAA88"
      End If
      r = r + 1
    Wend
    End Sub






  • di claudio (utente non iscritto) data: 07/11/2017 20:46:10

    Ciao Patel.
    Grazie per l'aiuto. La macro funziona e ti inserisce il dato, solo che poi esce errore su questa stringa

    If Cells(r, "C") - Cells(r - 1, "C") = 2 Then

    time error 13

    Potresti risolvere tale errore?

    Grazie



  • di patel data: 07/11/2017 20:59:33

    Dovresti dirmi su quale riga te lo fa, visto che tu non mi hai voluto fornire un file di esempio ridotto me lo sono fatto da me e la macro funzionava bene, prova con  
     
    If Cells(r, "C").Value - Cells(r - 1, "C").Value = 2 Then 






  • di claudio (utente non iscritto) data: 09/11/2017 11:44:17

    Salve,
    purtroppo esce sempre lo stesso errore, puoi prendere come esempio la terza parte che ho allegato.


    Grazie ancora



  • di patel data: 09/11/2017 13:09:18

    sei andato a controllare in fondo al file ? ti sembrano valori numerici quelli in colonna C ?





  • di claudio (utente non iscritto) data: 09/11/2017 18:13:32

    Si potrebbe ignorarli li ultimi valori che non sono numerici?

    Grazie