Allora con il codice
- Codice: Seleziona tutto
Ue = Worksheets("DATI").Range("A" & Rows.Count).End(xlUp).Row
Ma se volessi sapere l'ultima colonna occupata nel range dalla colonna 33 a 122 (da AG a DR) come devo fare? (Tieni presente che oltre la colonna 122, dalla colonna 124 alla colonna 142, ho altri valori che non servono per il confronto e quindi il codice si deve limitare solo ed esclusivamente al campo 33-122 (o anche 1-122 se rilevo il dato da destra verso sinistra)
Spiego:
da AG a DR io ho dei valori qua e là (per il resto le celle sono vuote) es: Colonna 39 riga 2 (AM) ho un valore, poi ho un altro valore (l'ultimo della riga2 in esame e variabile da riga a riga) alla colonna 91 (CM) come posso sapere tramite codice che l'ultimo valore si trova alla colonna 91?
Questo mi occorre per evitare di scansionare tutte le cononne fino alla 122esima colonna avendo impostato un for next sia per le colonne che per le righe da confrontare con altra riga (e stessa colonna).
La macro usata da modificare per ridurre il campo di scansioe è questo:
- Codice: Seleziona tutto
Application.DisplayStatusBar = True
For I = 2 To Ue ' dove Ue è il numero di righe da confrontare
Application.StatusBar = "Elaborazione Foglio TOP Attendere... " & Int(I / Ue * 100) & " %" 'informazione utente dell'elaborazione in atto
For CC = 33 To 122
If Val(Worksheets("DATI").Cells(I, CC)) > 0 Then
For IAbb = I + 1 To Ue
ContaE = 0
If Val(Worksheets("DATI").Cells(IAbb, CC)) > 0 Then
For CCAbb = CC To 122
If Val(Worksheets("DATI").Cells(I, CCAbb)) > 0 Then
If Val(Worksheets("DATI").Cells(IAbb, CCAbb)) <> 0 And Val(Worksheets("DATI").Cells(I, CCAbb)) <> Val(Worksheets("DATI").Cells(IAbb, CCAbb)) Then
ContaE = ContaE + 1
End If
End If
Next CCAbb
End If
If ContaE >= MaxVal Then 'Maxval è un filtro per eliminare ciò chenon interessa e riduce le righe in Top
Sheets("Top").Range("A1").Offset(Aline, 0).Value = ContaE
Sheets("Top").Range("A1").Offset(Aline, 1).Value = I - 1
Sheets("Top").Range("A1").Offset(Aline, 2).Value = IAbb - 1
Aline = Aline + 1
End If
Next IAbb
End If
Next CC
Next I
La macro funziona (anche se ho delle "strane" ripetizioni nel foglio Top che vedrò in seguito) quello che volevo chiederti è appunto limitare il valore CC che non deve arrivare a 122 se la riga di riferimento I ha il suo ultimo valore alla colonna 91, in questo caso e dopo averla confrontata, passare alla riga successiva (next I)
Ciao