Contare Celle Tra Numeri Doppi



  • Contare Celle Tra Numeri Doppi
    di Kirotta data: 18/04/2014 22:52:00

    Ciao a tutti

    Su una form ho una casella di testo e un bottone che inserisce i numeri che digito nella casella di testo nella colonna B di un foglio excel
    quindi può capitare di inserire numeri uguali.
    Se questo capita vorrei che il programma mi conti quanti numeri vengono inseriti tra un numero e il suo doppione (compreso) e se questo si ripresenta prima di 18 numeri venga copiato in un'altra colonna.

    Se ad es ho il 5 in B3 e inserisco ancora 5 in B10........ il 5 si è ripresentato prima di 18 numeri quindi lo copio in colonna C

    questa è una bozza di codice da visionare:

    Grazie


     
    Option Explicit
    
    Private Sub cmdStart_Click()
    
    Dim LR As Integer
    LR = Cells(Rows.Count, "B").End(xlUp).Row + 1                        'INSERISCO I NUMERI NELLA COLONNA B
    Sheets(1).Cells(LR, 2) = Val(txtStart)
    '-----------------------------------------------------------------------------------------------------------------------
    
    With Sheets(1)
    
        Dim Area As Range
        Dim Numero As Integer
        Dim LRC As Integer
       
        Set Area = .Range("B2:B" & LR)
        Numero = Val(txtStart)
        LRC = Cells(Rows.Count, "C").End(xlUp).Row + 1
       
        Dim ciclo As Long
         
        'VERIFICO SE IL NUMERO è GIà PRESENTE IN COLONNA "B"
        For ciclo = LR - 1 To LR - 18 Step -1
            If ciclo < 1 Then
            Exit For
            
            If CLng(txtStart) = .Cells(ciclo, 2).Value Then
                .Cells(LRC, 3).Value = CLng(txtStart)
                '.Cells(ciclo, 3).Value = CLng(txtStart)
                Exit For
            End If
        End If
        Next
    
    End With
       
    End Sub
    



  • di scossa data: 18/04/2014 23:40:41

    Senza entrare nel merito del codice, questa modifica dovrebbe limitare la ricerca alle 18 celle precedenti.



    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

     
    Private Sub cmdStart_Click()
    
      Dim LR As Integer
      Dim Area As Range
      Dim Numero As Integer
      Dim LRC As Integer
      Dim nOff As Long
    
      LR = Cells(Rows.Count, "B").End(xlUp).Row + 1                        'INSERISCO I NUMERI NELLA COLONNA B
      Sheets(1).Cells(LR, 2) = Val(txtStart)
    '-----------------------------------------------------------------------------------------------------------------------
    
    With Sheets(1)
        
        nOff = Application.Min(17, LR) - 1
        Set Area = .Range("B" & nOff & ":B" & LR)
        Numero = Val(txtStart)
        LRC = Cells(Rows.Count, "C").End(xlUp).Row + 1
            
        'VERIFICO SE IL NUMERO è GIà PRESENTE IN COLONNA "B"
        If Application.WorksheetFunction.CountIf(Area, Numero) > 1 Then
            .Cells(LRC, 3) = Val(txtStart)
        End If
    End With
    Set Area = Nothing
    End Sub
    



  • di Kirotta data: 19/04/2014 01:50:28

    copia nella colonna solo digitando numeri consecutivi

    Se digito 2 2 4 3 6 12 3

    il 2 lo copia nella colonna mentre il 3 no

    Grazie



  • di scossa data: 19/04/2014 09:44:33

    Vero,

    l'istruzione colpevole è questa:
    nOff = Application.Min(17, LR) - 1

    sostituiscila con questa:
    nOff = IIf(LR - 17 < 2, 2, LR - 17)


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)



  • di Kirotta data: 19/04/2014 17:01:41

    PERFETTO!!!
    Grazie