Routine a scalare sulle righe



  • Routine a scalare sulle righe
    di Spinn (utente non iscritto) data: 14/02/2013 17:19:14

    Riga dopo riga per 200 righe devo comparare i dati contenuti nelle celle corrispondenti a colonne che indicherò nella routine (es. A1, B1, D1, F1 ecc.). I dati sono nelle celle sempre sulla stessa riga. Come devo fare per fare funzionare il contatore in automatico fino all 200ma riga? Grazie



  • di Vecchio Frac data: 14/02/2013 17:44:57

    Non ho compreso perchè hai indicato il numero di versione di Excel con il punto interrogativo. Se non lo sai tu che versione hai... ^_^

    Nel merito, il concetto è:
    fai un ciclo con un contatore "i" che va da 1 a 200. Considera la cella i-esima. Confrontala con la cella nella colonna stabilita. Ripeti il ciclo.

    for i = 1 to 200
    if cells(i, "A") = cells(i, "F") then ...
    next





  • di Spinn (utente non iscritto) data: 14/02/2013 21:57:31

    Non funziona
     
    Private Sub CommandButton1_Click()
    For i = 1 To 11
    If Cells(i, "A") = Cells(i, "F") Then
    If Cells("c") = Cells("a") Then
    Cells("b") = Cells("d")
    End If
    Next
    End Sub



  • di HarryBosch data: 15/02/2013 00:23:19

    Ciao Spinn
    nel tuo esempio manca la chiusura di un IF con End if; e i riferimenti del Cells successivi al primo If sono errati in quanto Cells("c") non definisce nessun range.

    Se devi confrontare due condizioni, puoi anche unire gli IF in un'unica soluzione, utilizzando l'operatore AND o OR, a seconda del caso.
    Ti consiglio di dichiarare sempre le variabili (con Option Explicit in testa al modulo), per sfruttare al meglio la memoria ed evitare errori di sintassi.
     
    Private Sub CommandButton1_Click()
    Dim i As Integer
        For i = 1 To 11
            If Cells(i, "A") = Cells(i, "F") Then
                If Cells(i, "c") = Cells(i, "a") Then
                    Cells(i, "b") = Cells(i, "d")
                End If
            End If
            Next
        End Sub
    
    
    'oppure:
    Private Sub CommandButton1_Click()
        Dim i As Integer
        For i = 1 To 11
            If Cells(i, "A") = Cells(i, "F") And Cells(i, "c") = Cells(i, "a") Then
                Cells(i, "b") = Cells(i, "d")
            End If
        Next
    End Sub
    



  • di Spinn (utente non iscritto) data: 21/02/2013 09:53:09

    Risolta



  • di HarryBosch data: 21/02/2013 19:41:00

    Allora, per le prossime volte, dovresti spuntare la casellina sopra il Messaggio quando apri il thread per rispondere ^_^
    La spunto io