Tengo 3 Hojas
Hoja1 ("PADRÓN")
Hoja2("REGISTROS")
Hoja3("INFORME")
La siguiente Macro buscara en la Hoja2 (Columna B) mediante un bucle, fechas que se encuentren entre El 01/01/2013 y 16/10/2013, primero evaluara si la fecha encontrada es igual o mayor a 01/01/2013 y posteriormente evaluara si esta es igual o menor a 16/10/2013 en caso de ser asi,Tomara el valor de la celda con la fecha (Columna B) así como el valor contiguo de la columna "E" ("TOTAL A PAGAR"), y lo registrara en la 3er Hoja (Informe) a su vez mediante u = Sheets("REGISTROS").Cells(b, 1).Characters(Start:=5, Length:=1).Text
Extraerá un valor el cual según sea el caso determinara el dato a establecer en la columna "D" de La Hoja3 "INFORME"
Select Case u
Case "1", "3"
Q = "IMPUESTOS - " & u & "ER - BIMESTRE - "
Case "2"
Q = "IMPUESTOS - " & u & "DO - BIMESTRE - "
Case "4", "5", "6"
Q = "IMPUESTOS - " & u & "TO - BIMESTRE - "
End Select
.Cells(13 + i, 4).Value = Q & Sheets("REGISTROS").Cells(b, 1).Characters(Start:=1, Length:=4).Text
Quedando de la Siguiente Manera en la Hoja3 "INFORME"
El detalle esta en que la Hoja2("REGISTROS") cuenta con 6750 Filas y como se observa
en esta, el valor de celda de la columna "A" se integra de la siguiente manera:
20061X72XXX38454
20062X72XXX38454
20063X72XXX38454
20064X72XXX38454
20065X72XXX38454
20066X72XXX38454
................................
................................
...20146X72XXX38454
Siendo los últimos 11 valores una constante, que son extraídos mediante la siguiente linea
uu = Sheets("REGISTROS").Cells(b, 1).Characters(Start:=6, Length:=11).Text
Dato el cual se buscara en la Hoja1("Padrón"), Columna "B", y una vez encontrada su ubicación se tomara el valor de la celda contigua ("A"),el problema radica en que cada ocasión que se encuentre un valor que cumpla las expectativas, se rrecorrera la Hoja1 ("PADRÓN"), en busca del valor correspondiente, disparando el tiempo de ejecución de la macro, busco que si el valor no ha sido declarado, entonces se busque y se declare, caso contrario, unicamente se tome el ya declarado. espero darme a entender, pero son las mejores palabras que tengo, por tu ayuda, muchas gracias, jejeje tardo, por que no se como explicar como ya te habrás dado cuenta.
(Es obvio que el fragmento de código que aparece abajo esta mal, debido a que no estoy controlando el tamaño de ii en cada recorrido)
Prueba: 'Etiqueta
If Sheets("PADRÓN").Cells(2 + ii, 2).Value <> uu Then
ii = ii + 1
GoTo Prueba:
Else
iii = Sheets("Padrón").Cells(2 + ii, 2).Row
End If
.Cells(13 + i, 5).Value = Sheets("PADRÓN").Range("A" & iii).Value
Macro Completa que elabore, kon error
Sub Ejemplo()
Application.ScreenUpdating = False
fecha1 = DateSerial(2013, 1, 1)
fecha2 = DateSerial(2013, 10, 16)
Dim uu As String
a = Sheets("REGISTROS").Range("A1").End(xlDown).Row
aa = Sheets("INFORME").Range("B13").End(xlDown).Row
Sheets("INFORME").Range("B13:E" & aa).Clear
For b = 2 To a
Select Case Sheets("REGISTROS").Cells(b, 2).Value
Case Is = ""
GoTo Siguiente
Case Is = fecha1, Is > fecha1
Select Case Sheets("REGISTROS").Cells(b, 2).Value
Case Is < fecha2, Is = fecha2
With Sheets("INFORME")
.Cells(13 + i, 2).Value = Sheets("REGISTROS").Cells(b, 2).Value
.Cells(13 + i, 3).Value = Sheets("REGISTROS").Cells(b, 5).Value
u = Sheets("REGISTROS").Cells(b, 1).Characters(Start:=5, Length:=1).Text
Select Case u
Case "1", "3"
Q = "IMPUESTOS - " & u & "ER - BIMESTRE - "
Case "2"
Q = "IMPUESTOS - " & u & "DO - BIMESTRE - "
Case "4", "5", "6"
Q = "IMPUESTOS - " & u & "TO - BIMESTRE - "
End Select
.Cells(13 + i, 4).Value = Q & Sheets("REGISTROS").Cells(b, 1).Characters(Start:=1, Length:=4).Text
uu = Sheets("REGISTROS").Cells(b, 1).Characters(Start:=6, Length:=11).Text
Prueba:
If Sheets("PADRÓN").Cells(2 + ii, 2).Value <> uu Then
ii = ii + 1
GoTo Prueba:
Else
iii = Sheets("Padrón").Cells(2 + ii, 2).Row
End If
.Cells(13 + i, 5).Value = Sheets("PADRÓN").Range("A" & iii).Value
End With
i = i + 1
Sheets("INFORME").Range("G2").Value = i
End Select
End Select
Siguiente:
Next b
Application.ScreenUpdating = True
End Sub