Confronta celle



  • Confronta celle
    di cavitto data: 17/02/2017 13:19:05

    Continuo a sbattere contro un muro di gomma su un problema di una banalità disarmante. Ma tant'è.
    In un foglio di lavoro devo costruire una macro che mi "randomizzi" dei numeri e me li inserisca in una prestabilita colonna.
    Nel processo di randomizzazione, la macro deve contenere anche un controllo affinché i numeri randomizzati non si duplichino nella colonna.
    Qualora si duplicassero, deve cancellare l'ultimo numero e ripetere la randomizzazione su questo.
    Ora: il problema è abbastanza banale, ma il codice che costruisco per il controllo, pur apportando tutte le modifiche del caso, è come se non ci fosse e la duplicazione dei numeri nella colonna rimane.
    Allego l'estratto della macro nel punto in cui si sviluppa il controllo dando per scontato ciò che viene prima risultando superfluo.
    Chiedo umilmente aiuto
     
    'I numeri vengono inseriti nella colonna attraverso l'istruzione "Cells(I,C).Value = Int((50*Rnd())+1)", dove I e C vengono guidati dentro un loop'
    
    Control=0                            'Variabile di controllo'
    For Z (I-1) to 6 step -1
    If Cells (I,C).Value=Cells (Z,C).Value Then Control=1 and Z=6
    Next Z
    If Control=1 Then GoTo.......... Else GoTo..........
    ..........
    ..........
    .........



  • di patel data: 20/02/2017 10:24:02

    allega un file di esempio con anche l'intero codice





  • di zsadist data: 17/03/2017 15:05:22

    Buongiorno..

    purtroppo non ho molto tempo per verificare il codice, comunque.. ti posto una prova che ho fatto, con un range abbastanza limitato... vedi se è possibile adattarlo alle tue esigente..

    sempre che funzioni
     
    Sub prova1()
    
    
    C = 50
    
    For i = 1 To C
    10:
    numero = Int((50 * Rnd()) + 1)
    
    Set zonaF = Range("A1:A100")
    
    For Each CFL In zonaF
    Debug.Print CFL.Value
    If CFL.Value = numero Then
    
    GoTo 10
    End If
    Next
    Cells(i, 1) = numero
    
    Next i
    
    End Sub