Numeri mancanti



  • Numeri mancanti
    di Fabio (utente non iscritto) data: 17/11/2014 18:07:58

    Buonasera a tutti,
    rieccomi con un altro problema da risolvere.....
    Nella colonna A, ho dei numeri progressivi da 1 a x
    Avrei bisogno di una macro che mi controlli se ci sono dei "buchi" ed eventualmenti me li segnali della colonna B
    Non so se serve, ma allego file.
    Grazie



  • di Mister_x (utente non iscritto) data: 17/11/2014 19:03:08

    ciao

    da inserire nel foglio di utilizzo

    riallego tuo file con la sub()
    ciao
     
    Option Explicit
    Sub numeri_mancanti()
    Dim minimo, massimo, Nriga, i, n_x As Long
    Dim N_Numeri As Range
    Set N_Numeri = Range("A3:A" & Cells(Rows.Count, 1).End(xlUp).Row)
    minimo = Application.Min(Range("A3:A" & Cells(Rows.Count, 1).End(xlUp).Row))
    massimo = Application.Max(Range("A3:A" & Cells(Rows.Count, 1).End(xlUp).Row))
    Nriga = 3
    Range("B3:B1000").ClearContents
     For i = minimo To massimo
      n_x = Application.Lookup(i, N_Numeri)
        If i <> n_x Then
         Cells(Nriga, "B") = i
         Nriga = Nriga + 1
        End If
     Next i
    Set N_Numeri = Nothing
    End Sub
    






  • di Fabio (utente non iscritto) data: 17/11/2014 19:36:52

    E' perfetto.
    Grazie mille e buona serata



  • di Mister_x (utente non iscritto) data: 18/11/2014 00:17:00

    ciao fabio

    sostituisci la sub() di prima con quest'altra cosi' anche se i numeri non sono consecutivi,
    dal piu' piccolo al piu' grande ma in ordine sparso, vengono calcolati ugualmente

    ciao
     
    Option Explicit
    Sub numeri_mancanti()
    Dim minimo, massimo, Nriga, i As Long
    Dim N_Numeri As Range
    Set N_Numeri = Range("A3:A" & Cells(Rows.Count, 1).End(xlUp).Row)
    minimo = Application.Min(Range("A3:A" & Cells(Rows.Count, 1).End(xlUp).Row))
    massimo = Application.Max(Range("A3:A" & Cells(Rows.Count, 1).End(xlUp).Row))
    Nriga = 3
    Range("B3:B1000").ClearContents
     For i = minimo To massimo
        If Application.CountIf(N_Numeri, "=" & i) = 0 Then
          Cells(Nriga, "B") = i
          Nriga = Nriga + 1
        End If
     Next i
    Set N_Numeri = Nothing
    End Sub
    






  • di ninai (utente non iscritto) data: 18/11/2014 06:26:22

    ciao
    un alternativa lato formule:
    =AGGREGA(15;6;(MIN($A$3:$A$36)+RIF.RIGA($A$3:$A$36)-3)/(CONTA.SE($A$3:$A$36;MIN($A$3:$A$36)+RIF.RIGA($A$3:$A$36)-3)=0);RIF.RIGA(A1))



  • di Fabio (utente non iscritto) data: 18/11/2014 08:54:04

    grazie Mister_x, non dovrebbe succedere ma non si sa mai

    grazie ninai, oggi provo anche la formula, si impara sempre....

    buona giornata a tutti