Buscar datos en hojas

Hola,
Quisiera realizar una macro, o crear un vínculo en una hoja (en la primera) en ella tendré todos los días del año por columnas, y encima de ellos el número de semanas al que corresponden (semana 1 es la primera semana de enero, y así con todas). En cada hoja del libro tendré una semana, quisiera crear un vínculo o una macro en cada casilla debajo del día, que me llevará a la semana en cuestión de ese día que pincho, la cual se encuentra en una hoja del libro.
Por ejemplo: Pincho en el día 1 de enero, entonces me lleva a la hoja 2 que tendré cambiado el nombre por "SEMANA 1", y se posiciona el cursor en el día 1.
Estos vínculos se podrían rellenar automáticamente cada vez que yo rellene o complete las hojas de las semanas, o hay que crearlos manualmente.
Gracias.

2 respuestas

Respuesta
1
Admito que estoy un tanto confundido. Si interpreto literalmente lo que dices, en cada columna de tu hoja tendrás una fecha por cada día del año.
Eso no sería posible, toda vez que MS Excel dispone de 256 columnas y un año que se precie no menos de 365 ;)
De todos modos, a los efectos de lo que solicita desarrollé la siguiente macro que asume que tus fechas están en la primer columna ("A") ocupando 365 filas y en la columna de al lado está el número de semana. Pero verás que en l macro indico qué tendrías que cambiar para que funcione con tu disposición de datos real.
---
Paréntesis: Por si te sirve, MS Excel tiene una función automática que calcula a qué semana pertenece una determinada fecha. Se trata de:
=NUM.DE.SEMANA(<fecha>)
---
Sigo:
Para que funcione, activa el editor de Visual Basic (presiona Alt+F11) y busca
La hoja donde quieres que esto ocurra (donde están las fechas). Da doble click sobre ella.
Copia el código siguiente y pégalo en el panel desplegado a la derecha de su Editor de Visual Basic:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Target.Column = 1 Then
If IsDate(Target.Value) Then
Dim SheetEx As Object
Dim RangoFechas As Range
'fila o columna en la hoja de destino donde esta la fecha a seleccionar:
' en este caso asumí que las fechas están en la fila 4
RangoBusq = "4:4"
ShNnom = "SEMANA " & Trim(Target.Offset(0, 1).Value)
'Si realmente el número de semana está sobre la fecha,
'anula la de arriba (con un apostrofe delante de ella)
'y usa la siguiente sentencia:
'ShNnom = "SEMANA " & Trim(Target.Offset(-1).Value)
LaFecha = CDate(Target.Value)
On Error Resume Next
Set SheetEx = ActiveWorkbook.Sheets(ShNnom)
Set RangoFechas = SheetEx.Range(RangoBusq)
If Err <> 0 Then
MsgBox "La hoja " & ShNnom & " NO existe en este libro " & Chr(10) & "Creala y luego selecciona el día", vbInformation, "HOJA INEXISTENTE"
Exit Sub
Else
On Error GoTo 0
SheetEx.Select
RangoFechas.Select
Set Dept = RangoFechas.Find(What:=LaFecha, LookIn:=xlFormulas, LookAt:=xlWhole)
If Not Dept Is Nothing Then
Dept.Select
End If
End If
Set SheetEx = Nothing
Set Dept = Nothing
End If
End If
End Sub
Lo dicho si tus rangos fuesen otros, modifícalos donde te indico.
Cierra el Editor de VBA y graba el archivo.
Bien, esta macro hace exactamente lo que solcitaste, controlando primero que la hoja de destino exista.
Espero que esto ayude a resolver tu problema. Si así fuera, agradeceré un comentario y que la finalices.
(Recuerda que mantener cierto número de respuestas pendientes impide que otros usuarios puedan consultarme)
En caso contrario, puedes preguntarme nuevamente
Aclarando qué entendí mal o qué faltó.
Respuesta
1
Enviame un prototipo de tu hoja sin macros ni vínculos, solamente documentada, y yo te busco la forma de darle solución. Envíamelo a [email protected] Jesús Jose Contreras

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas