Mostrar en celda la información de una ficha de hoja anterior

Tengo el siguiente inconveniente:

En el Libro tengo lo siguiente:

Ficha de Hoja:

Encontrándome en ficha hoja JUEVES, en la celda A1

(1)

/LUNES\ /MARTES<a>\ /MIERCOLES\ /JUEVES\</a> . . .

Para mostrar la información anterior (por ejemplo de MIERCOLES, encontrándonos en JUEVES), la formula que utilizó es la siguiente:

=+MIÉRCOLES!K3 (en celda A1, en JUEVES)

(2)

/MIÉRCOLES\ /LUNES\ /MARTES\ /JUEVES\ . . .

si muevo el fichero MIÉRCOLES me mantiene apareciendo la información (=+MIÉRCOLES!K3) de dicha ficha (ficha MIÉRCOLES), asi la cambie en las posiciones posible (ya que es por defecto de la formula).

Necesito lo siguiente:

Quiero que me muestre la información del fichero anterior, asi este no sea MIÉRCOLES. Me explico:

En el (1), estando en JUEVES, en la celda A1, la información debe ser K3 de la ficha hoja anterior MIÉRCOLES, en este caso no hay problemas.

En el (2), estando en JUEVES, en la celda A1, la información debe ser k3 de la ficha hoja anterior MARTES pero en este caso me muestra MIÉRCOLES.

Agradecería de antemano su ayuda.

1 respuesta

Respuesta
1

Para eso tendrás que construirte una función personalizada en VBA:

Function RefNumHoja()Dim NumHoja As LongNumHoja = ActiveSheet.IndexIf NumHoja = 1 ThenMsgBox "Ojo es la primera hoja!!!"ElseRefNumHoja = Sheets(NumHoja - 1).Range("K3").ValueEnd IfEnd Function

Con esta función obtendrás siempre la referencia K3 de la hoja inmediata a la izquierda de donde tengas la función. POr ejemplo, tienes las hojas distribuidas:

Lunes, Martes, Miércoles

Y te sitúas en la Hoja miércoles, y en esta insertas la función (sin argumentos) RefNumHoja, obtendrás la referencia de la celda K3 de la hoja Martes. Pero si tienes esta distribución de hojas:

Miércoles, Martes, Lunes

Y te sitúas en la Hoja lunes, tras insertar en esta la función, conseguirás el valor de la celda K3 de la hoja Martes.

Espero te sirva.

Slds

P.D.: Si te sirvió y fue útil la información, por favor, no olvides valorar y cerrar la pregunta.

Cursos Excel y Macros - Excelforo

EXCELFORO:

Me sirvió mucho, lo anterior; solo especifico algunos puntos para no cometer errores:

Función personalizada = Crear un Moludo (“Programador”, “Visual Basic” e insertamos un nuevo modulo)

Escribí lo siguiente:

Function RefNumHoja()

Dim NumHoja As Long NumHoja = ActiveSheet.Index

If NumHoja = 1 Then MsgBox "Ojo es la primera hoja!!!" Else

RefNumHoja = Sheets(NumHoja - 1).Range("K3").Value

End Function

En Celda colocar :

=+REFNumHoja()

Tengo el siguiente inconveniente:

La formula no se actualiza automaticamente, ya probé lo siguiente pero todavia no tengo solución:

Botón Office>Opciones de Excel>Fórmulas> calculo automatico

Function RefNumHoja()Dim NumHoja As Long

NumHoja = ActiveSheet.IndexIf NumHoja = 1 Then MsgBox "Ojo es la primera hoja!!!" ElseRefNumHoja = Sheets(NumHoja - 1).Range("K3").ValueEnd Function

Añádele la siguiente línea Application. Volatile, para que quede así:

Function RefNumHoja()
Application.Volatile
Dim NumHoja As Long
NumHoja = ActiveSheet.Index
If NumHoja = 1 Then
RefNumHoja = "Ojo es la primera hoja!!!"
Else
RefNumHoja = Sheets(NumHoja - 1).Range("A1").Value
End If
End Function

Con eso conseguirás que actualice cada vez que haya un cambio en la hoja donde esté la función y también podrás actualizar como indicabas, presionando F9...

Más no se puede automatizar la función...

He cambiado el msgBox por un valor en la celda, es más práctico.

Slds

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas