¿Puedo extraer el valor de una misma celda en varias hojas diferentes y que aparezca en otra hoja?

Quería saber si existe alguna función en excel con la que pueda extraer el valor de una misma celda pero de varias hojas diferentes y que aparezca en otra hoja.
Por ejemplo si tengo Hoja1, Hoja2 y Hoja3 tengo que hacer que el valor de la celda A1 de Hoja1 y de Hoja2 aparezcan en la Hoja3. Pegados por fila o por columna, me da igual.

1 Respuesta

Respuesta
2
cuando dices pegados te refieres a que esten en la misma celda o en celdas contiguas pongamos Hoja1 celda A1=Andres, Hoja 2 celda A1=Perez, Hoja 3 celda A1=Andres Perez o bien celda A1=Andres celda B1=Perez.
Otra cosa esto lo tienes que hacer una vez solo o cuantas veces y en celdas sucesivas entendiendo por celdas sucesivas Hoja A1, A2, A3... Ax (cuantas veces, o es variable en función de los datos que cada vez tengas).
Aclarame esto y te digo el código.
>Un saludo
>Julio
Hola! Antes que nada, muchas gracias por responder!
Te cuento... El libro que utilizo se actualiza por semanas, es decir cada semana tengo una nueva hoja y yo tengo que extraer de esa hoja el valor de 9 celdas (te las menciono por las dudas que las necesites: G275, G289, G303, G280, G294, G308, G282, G294, G310) .
Con esos valores tengo que hacer una tabla, entonces me tendrían que ir apareciendo en celdas de filas sucesivas o columnas sucesivas (me da igual) en una nueva hoja, ningún dato tiene que aparecer en la misma celda que otro.
De nuevo, Gracias.
Saludos
Vale la macro modificas tú el nombre de la hoja nueva y el nombre de la hoja a la que llevas los datos.
Sub comprobar()
Sheets("Hojanueva").Select
cel1=Range("G275").Value
cel2=Range("G289").Value
cel3=Range("G303").Value
cel4=Range("G280").Value
cel5=Range("G294").Value
cel6=Range("G308").Value
cel7=Range("G282").Value
cel8=Range("G294").Value
cel9=Range("G310").Value
Sheets("HojaBase").Select
Range("A1").Select
Do While ActiveCell.Value<>""
ActiveCell.Offset(1,0).Select
Loop
ActiveCell.Value=cel1
ActiveCell.Offset(0,1).Value=cel2
ActiveCell.Offset(0,2).Value=cel3
ActiveCell.Offset(0,3).Value=cel4
ActiveCell.Offset(0,4).Value=cel5
ActiveCell.Offset(0,5).Value=cel6
ActiveCell.Offset(0,6).Value=cel7
ActiveCell.Offset(0,7).Value=cel8
ActiveCell.Offset(0,8).Value=cel9
End Sub
Esta macro toma los datos de los rangos que mencionas de la hoja que tú quieras y los lleva a la hoja que será la base de datos en columnas desde la A hasta la I y bajará para situarse en la primera celda vacía de A para seguir escribiendo cada vez que copies el rango.
>Un saludo
>Julio
Julio,
perdón por la demora.
No me queda claro que tengo que poner en los campos "HojaNueva" y "HojaBase"
Es decir, ¿el nombre de HojaBase sería siempre el mismo pero en HojaNueva tendría que cambiar el nombre cada vez que agrego una hoja y ejecutar nuevamente la macro?
En tu Hoja Base pones el nombre de la hoja donde quieres que aparezcan todos tus datos recogidos de las otras hojas.
En hoja nueva iría el nombre de cada hoja que quieres copiar los datos. Si son muchas me lo dices porque esta macro es solo para una hoja.
>Un saludo
>Julio
Hola,
si el libro tiene en este momento 24 hojas y se agrega una nueva cada semana. Por eso es que necesito que la macro extraiga los datos de esa celdas y los pegue en la hoja base cada semana.
De acuerdo, tienes que crear tu "Hoja Base" por ejemplo con este nombre para que lleve los datos a esa hoja, y ahora dibuja un botón en esa Hoja y le añades este código:
Private Sub CommandButton1_Click()
Call Copiar
End Sub
Ahora inserta un modulo y en él pegas estas instrucciones:
Sub Copiar()
Dim contador As Integer
Dim Hojanueva As String
Dim mi_hoja As String
For contador = 1 To Sheets.Count
Hojanueva = Sheets(contador).Name
mi_hoja = ActiveSheet.Name
Sheets(Hojanueva).Select
If Hojanueva = mi_hoja Then
GoTo Vuelve
End If
cel1 = Range("G275").Value
cel2 = Range("G289").Value
cel3 = Range("G303").Value
cel4 = Range("G280").Value
cel5 = Range("G294").Value
cel6 = Range("G308").Value
cel7 = Range("G282").Value
cel8 = Range("G294").Value
cel9 = Range("G310").Value
Sheets("Hoja Base").Select
Range("A1").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value = Hojanueva Then
Exit Do
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
If ActiveCell.Value = "" Then
ActiveCell.Value = Hojanueva
ActiveCell.Offset(0, 1).Value = cel1
ActiveCell.Offset(0, 2).Value = cel2
ActiveCell.Offset(0, 3).Value = cel3
ActiveCell.Offset(0, 4).Value = cel4
ActiveCell.Offset(0, 5).Value = cel5
ActiveCell.Offset(0, 6).Value = cel6
ActiveCell.Offset(0, 7).Value = cel7
ActiveCell.Offset(0, 8).Value = cel8
ActiveCell.Offset(0, 8).Value = cel9
End If
Vuelve:
Next
End Sub
Debes de crear una hoja que se llame " Hoja Base" y en ella poner el botón, la macro comprobará todas tus hojas si ya la habías pasado a la Hoja Base se la saltará y seguirá buscando hojas nuevas cuando las encuentre te pondrá los datos en fila y poniendo en la primera celda el nombre de la hoja de la que provienen los datos.
>Un saludo
>Julio

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas