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:
Hola a
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 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


Respuesta Responder a este mensaje
#2 Héctor Miguel
31/10/2005 - 05:01 | Informe spam
hola, Emilio !

... libro con varias hojas, en todas ellas en la columna A tengo una fecha
... buscar una fecha concreta en ella... alternando hojas y variando la fecha
... mediante codigo lo estoy haciendo sin problemas seleccionando A65536 y... End(xlUp)
... una vez alli, busco si es necesario hacia arriba
... ello exige activar hoja y seleccionar celdas... el proceso se enlentece
... convencido de que puedo hacerlo sin seleccionar celdas pero no se me ocurre como.
Alguna idea de como hacerlo?



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
Respuesta Responder a este mensaje
#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:
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:
> Hola a
> 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 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
>
>


Respuesta Responder a este mensaje
#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$
hola, Emilio !

> ... libro con varias hojas, en todas ellas en la columna A tengo una


fecha
> ... buscar una fecha concreta en ella... alternando hojas y variando la


fecha
> ... mediante codigo lo estoy haciendo sin problemas seleccionando A65536


y... End(xlUp)
> ... una vez alli, busco si es necesario hacia arriba
> ... ello exige activar hoja y seleccionar celdas... el proceso se


enlentece
> ... convencido de que puedo hacerlo sin seleccionar celdas pero no se me


ocurre como.
> Alguna idea de como hacerlo?

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


Respuesta Responder a este mensaje
#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$
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$
> hola, Emilio !
>
> > ... libro con varias hojas, en todas ellas en la columna A tengo una
fecha
> > ... buscar una fecha concreta en ella... alternando hojas y variando


la
fecha
> > ... mediante codigo lo estoy haciendo sin problemas seleccionando


A65536
y... End(xlUp)
> > ... una vez alli, busco si es necesario hacia arriba
> > ... ello exige activar hoja y seleccionar celdas... el proceso se
enlentece
> > ... convencido de que puedo hacerlo sin seleccionar celdas pero no se


me
ocurre como.
> > Alguna idea de como hacerlo?
>
> 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
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida