Referencias a hojas excel

Hola, tengo una columna con el nombre de las distintas hojasde excel de un libro.
Deseo realizar unas referencias a dichas hojas a través del nombre de la hoja, para que me devuelva el valor de ciertas celdas de cada hoja.
¿Cómo se podría hacer?
¿Con INDIRECTO?
¿Podría ver algún ejemplo?
Los nombres de las hojas que tengo son del tipo:
FA-1
FA-2
FA-3
Gracias

1 respuesta

Respuesta
1
Con indirecto no lo he realizado, lo he intentado pero me resulta más fácil y rapido mediante macro. Acá te dejo el macro que yo ocupo, por si te sirve de algo.
En un modulo pones
Sub formula(fila As Long)
Dim libro As String, hoja As String, celda As String
libro = Cells(fila, 1)
hoja = Cells(fila, 2)
celda = Cells(fila, 3)
Selection.Offset(-1, 1) = "=+'C:\[" & libro & ".xls]" & hoja & "'!" & celda
End Sub
ahora en el evento change de la hoja en que deseas utilizar el sub pones esto:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 Then Call formula(Target.Row)
End Sub
funciona de la sgte manera:
En columna A pones el nombre del libro, sin extensión, en col B pones el nombre de la hoja y en col C la celda que deseas recuperar. Así:
a1=Libro2
b1=Hoja1
c1=A1
En la col DE te dejaría la referencia a ese libro por ende el valor de la celda
Como veras en el sub el path de los libros se asumen que residen en C:
Obvimante tal vez te interasa llamar libros que se alojen en otras carpetas de tu disco, bueno en ese caso abría que modificar el sub, pero eso no es más que seguir concatenando celdas.
Oye, funciona perfectamente pero el problema es que tengo que pulsar en cada celda para que la operación se realice y tengo muchos datos.
¿No se podría ejecutar directamente sin pisar cada celda?
Además (aunque esto me preocupa menos) necesitaba recuperar 3 datos (celdas) de cada hoja, que irían en las celdas DE, E y F según tu esquema.
¿Se podría hacer?
Sçe que esto es más complicado pero por si acaso.
Un saludo¡
Mmm. Veamos
En realidad la macro se invoca solo por los cambios realizados en la columna 3 ( la referencia de la celda), es decir por los "cambios" realizados en alguna celda de específicamente esa columna y no otra.
Es la forma más automática que te puedo ofrecer.
La otra alternativa, que no te recomiendo, seria arreglar un bucle que recorra el rango de alguna columna en donde definas las celdas que deseas recuperar y el nombre del libro y la hoja lo podemos ingresar desde algún inputbox, pero eso poco practico.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas