Buscando una fecha en una columna

30/10/2005 - 21:47 por Emilio | Informe spam
Hola a tod@s
Tengo un libro con varias hojas, en todas ellas en la columna A tengo una
fecha, he de buscar una fecha concreta en ella y esto muchas veces
alternando hojas y variando la fecha, todo ello mediante código. lo estoy
haciendo sin problemas seleccionando A65536 y mediante End(xlUp) subo hasta
la ultima celda ocupada de la columna, una vez allí, busco si es necesario
hacia arriba, todo ello exige activar hoja y seleccionar celdas y por lo que
el proceso se enlentece, estoy convencido de que puedo hacerlo si
seleccionar celdas pero no se me ocurre como.
¿Alguna idea de como hacerlo?

Gracias anticipadas :-))

Saludos a tod@s desde Huelva
Emilio
miliuco56 ALGARROBA hotmail.com

http://www.mvp-access.com/foro
http://www.mvp-access.com/emilio

Reglas de conducta de los grupos de noticias:
http://support.microsoft.com/defaul...newsreglas

Preguntas similare

Leer las respuestas

#1 KL
30/10/2005 - 22:46 | Informe spam
Hola Emilio,

Seguramente no es necesario seleccionar la hoja ni los rangos buscados. Hay
varias formas de hacer lo que tu planteas, pero seria mucho mas facil darte
una solucion si expusieras el codigo que usas ahora y que quieres optimizar.

Saludos,
KL


"Emilio" <miliuco56 ALGARROBA hotmail PUNTO com> wrote in message
news:
Mostrar la cita
#2 Héctor Miguel
31/10/2005 - 05:01 | Informe spam
hola, Emilio !

Mostrar la cita
puedes buscar sin 'tocar' las hojas, lo que no has comentado es si existe la posibilidad de 'varias fechas iguales' -?-
[y si necesitas buscar toda coincidendia en varias hojas o solo 'la primera que te encuentres] -?-

[en via de mientras]... haz pruebas con el siguiente ejemplo [de entre otras varias posibilidades] y...
si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
en un modulo de codigo 'normal' ==Sub BuscarFecha()
Dim Fecha As Date, Hoja As Worksheet, Celda As Range
Fecha = Date
For Each Hoja In Worksheets(Array("Hoja2", "Hoja3", "Hoja4"))
If Application.CountIf(Hoja.Columns("a"), Fecha) > 0 Then
Set Celda = Hoja.Columns("a").Find(Fecha, [a1])
MsgBox "Fecha encontrada en " & Hoja.Name & vbCr & _
"en la celda " & Celda.Address
Exit For ' elimina esta linea para buscar en las hojas 'siguientes' :)) '
End If
Next
Set Celda = Nothing
End Sub
#3 Emilio
31/10/2005 - 08:36 | Informe spam
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
Gracias KL -se te echaba de menos :-))

ahi va mi código, veo que Hector Miguel también me ha respondido, voy a ver
que me cuenta

Function BuscaFecha(strHoja As String, strFecha As String) As Long

Dim datFecha As Date

On Error GoTo BuscaFecha_TratamientoErrores

datFecha = CDate(strFecha)

With Worksheets(strHoja)
.Activate
.Range("A65536").Select
Selection.End(xlUp).Select
If Not IsDate(ActiveCell) Then
' si no es fecha la inserto en la siguiente
ActiveCell.Offset(1, 0) = datFecha
BuscaFecha = ActiveCell.Row + 1
Else
Select Case ActiveCell
Case Is < datFecha
' si es menor la inserto en la siguiente
ActiveCell.Offset(1, 0) = datFecha
BuscaFecha = ActiveCell.Row + 1
Case datFecha
BuscaFecha = ActiveCell.Row
Case Is > datFecha
' si es mayor la busco hacia arriba
Do Until ActiveCell = datFecha
ActiveCell.Offset(-1, 0).Select
Loop
BuscaFecha = ActiveCell.Row
End Select
End If
End With

BuscaFecha_Salir:
On Error GoTo 0
Exit Function

BuscaFecha_TratamientoErrores:

MsgBox "Error " & Err.Number & " en proc.: BuscaFecha de Formulario:
frmImportar (" & Err.Description & ")"
Resume BuscaFecha_Salir

End Function ' BuscaFecha

Saludos a
Emilio
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro
http://www.mvp-access.com/emilio


"KL" escribió en el mensaje
news:
Mostrar la cita
Hay
Mostrar la cita
darte
Mostrar la cita
optimizar.
Mostrar la cita
una
Mostrar la cita
estoy
Mostrar la cita
celdas
Mostrar la cita
#4 Emilio
31/10/2005 - 08:50 | Informe spam
Genial Hector como siempre, muchas gracias :-))

supongo que no me explique suficientemente bien, porque la busqueda he de
hacerla en distintas ocasiones en cada una de las hojas y estará en todas
ellas, despues de retocarla queda así (lo que realmente necesito saber, es
en que fila se encuentra la fecha)

Function BuscarFecha(datFecha As Date, Hoja As Worksheet) As Long

Dim Celda As Range
If Application.CountIf(Hoja.Columns("a"), datFecha) > 0 Then
Set Celda = Hoja.Columns("a").Find(datFecha, [a1])
BuscarFecha = Celda.Row
End If
Set Celda = Nothing
End Function ' BuscarFecha

A expensas de que KL tenga algo mas que decir, creo que puedo dar el tema
por zanjado no sin antes agradeceroslo a los dos.

Saludos a
Emilio
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro
http://www.mvp-access.com/emilio


"Héctor Miguel" escribió en el mensaje
news:OmoND$
Mostrar la cita
fecha
Mostrar la cita
fecha
Mostrar la cita
y... End(xlUp)
Mostrar la cita
enlentece
Mostrar la cita
ocurre como.
Mostrar la cita
la posibilidad de 'varias fechas iguales' -?-
Mostrar la cita
primera que te encuentres] -?-
Mostrar la cita
otras varias posibilidades] y...
Mostrar la cita
:)) '
Mostrar la cita
#5 Emilio
31/10/2005 - 08:59 | Informe spam
Veo que realmente me sobra el if con el Find es suficiente ;-))

Saludos a
Emilio
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro
http://www.mvp-access.com/emilio


"Emilio" <miliuco56 ARROBA hotmail.com> escribió en el mensaje
news:OqfBH$
Mostrar la cita
la
Mostrar la cita
A65536
Mostrar la cita
me
Mostrar la cita
existe
Mostrar la cita
'siguientes'
Mostrar la cita
Ads by Google
Search Busqueda sugerida