Para Hector Miguel

16/05/2004 - 03:26 por Amadeo Govoni | Informe spam
Estimado
Vos has puesto esto

Sub Eliminar_Repetidos_Anteriores()
Dim Codigos As String, Horas As String, Repetidos As String, Fila As Long
Codigos = Range(Range("a2"), Range("a65536").End(xlUp)).Address
Horas = Range(Codigos).Offset(, 1).Address
With Range(Codigos)
If .Rows.Count = Evaluate("Sum(1/CountIf(" & Codigos & "," & Codigos &
"))") Then Exit Sub
For Fila = 1 To .Rows.Count
If Application.CountIf(Range(Codigos), .Cells(Fila)) > 1 _
And .Cells(Fila).Offset(, 1) < Evaluate("Max(If(" & Codigos & "=""" &
.Cells(Fila) & """," & Horas & "))") Then
If Repetidos <> "" Then Repetidos = Repetidos & ","
Repetidos = Repetidos & .Cells(Fila).Address
End If
Next
End With
If Repetidos <> "" Then Range(Repetidos).EntireRow.Delete
End Sub


Me podrias explicar las sentencias si tenes un poco de tiempo?

En realidad lo copie a excel
Funcionó sin error pero no hizo nada

Gracias por tu posible tiempo
Saludos Amadeo
 

Leer las respuestas

#1 Héctor Miguel
16/05/2004 - 08:45 | Informe spam
hola, Amadeo !

Me podrias explicar las sentencias si tenes un poco de tiempo?


=> espero no 'aburrir' a quien 'se atreva' a leer mis 'explicaciones' :))

1> Sub Eliminar_Repetidos_Anteriores()
2> Dim Codigos As String, Horas As String, Repetidos As String, Fila As Long
3> Codigos = Range(Range("a2"), Range("a65536").End(xlUp)).Address
4> Horas = Range(Codigos).Offset(, 1).Address
5> With Range(Codigos)
6> If .Rows.Count = Evaluate("Sum(1/CountIf(" & Codigos & "," & Codigos & "))") Then Exit Sub
7> For Fila = 1 To .Rows.Count
8> If Application.CountIf(Range(Codigos), .Cells(Fila)) > 1 _
8a> And .Cells(Fila).Offset(, 1) < Evaluate("Max(If(" & Codigos & "=""" & .Cells(Fila) & """," & Horas & "))") Then
9> If Repetidos <> "" Then Repetidos = Repetidos & ","
10> Repetidos = Repetidos & .Cells(Fila).Address
11> End If
12> Next
13> End With
14> If Repetidos <> "" Then Range(Repetidos).EntireRow.Delete
15> End Sub
-
1, 11, 12, 13 y 15... 'sin comentarios' :))
2 = declaracion de las variables 'necesarias' para el 'proposito' del codigo
3 = 'obtencion' del rango [que se supone 'variable'] donde estan los codigos [solo la direccion]
4 = el rango de las horas [se supone que] debe ser 'desplazado' una columna a la derecha de los codigos
5 = 'vamos a trabajar' dentro del trango de los codigos
6 = si el numero de filas es 'igual' al numero de elementos 'unicos'... 'no hay nada que hacer'... nos salimos ;)
7 = 'recorremos' el rango de los codigos... 'fila por fila' [hasta la ultima]
8 y 8a = si la fila que 'estamos trabajando' tiene elementos 'repetidos' =>Y< la hora de la transaccion es 'menor' a la hora mas 'reciente' [para ese codigo] ...
10 y 11 = vamos 'construyendo' un 'nuevo' rango con las direcciones de 'esos' elementos 'repetidos'
14 = 'finalmente'... eliminamos las filas 'correspondientes' a 'ese' nuevo rango ;)
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
En realidad lo copie a excel. Funciono sin error pero no hizo nada


[probablemente] los codigos que estas usando son 'exclusivamente' =>numericos<=> revisa la 'continuacion' de la consulta 'original' <
¿comentas?
saludos,
hector.

Preguntas similares