completar una tabal con informcaion que hay en distintas hojas de un mismo libro

21/11/2006 - 11:28 por bbassn | Informe spam
Necesito ayuda para completar una tabla con informacion que hay en
varias hojas de un mismo libro.
Tengo un libro con unas 160 hojas y necesito hacer una tabla con
informacion que hay en las mismas celdas, pero en distintas hojas de un
mismo libro, es decir:

dato 1 dato2 dato 3
hoja 1 celda a1 hoja 1 celda F14
hoja 2 celda a1 hoja 2 celda F14


Gracias

Preguntas similare

Leer las respuestas

#1 Juan M
21/11/2006 - 13:20 | Informe spam
hola

Necesito ayuda para completar una tabla con informacion que hay en
varias hojas de un mismo libro.
Tengo un libro con unas 160 hojas y necesito hacer una tabla con
informacion que hay en las mismas celdas, pero en distintas hojas de un
mismo libro, es decir:

dato 1 dato2 dato 3
hoja 1 celda a1 hoja 1 celda F14
hoja 2 celda a1 hoja 2 celda F14


Gracias



Si tus hojas se llaman Hoja1; Hoja2 puedes hacer lo que pides con la
formula Indirecto de la siguiente forma

=INDIRECTO("hoja"&FILA(2:2)&"!$a$1")

Esta forma es un poco 'peligrosa' ya que es volatil, lo que pude llegar a
ralentizar la hoja en exceso ya que hablamos de por lo menos 3*160
referencias, mas los calculos que deba realizar. Si quieres profundizar un
poco en esto revisa el siguiente enlace.

http://www.decisionmodels.com/calcsecretsi.htm

Dependiendo de los resultados que obtengas comentas? Quiza podamos hacer una
macro que capture los datos.

Un saludo
Juan
Respuesta Responder a este mensaje
#2 bbassn
21/11/2006 - 13:40 | Informe spam
Gracias Juan, pero por desgracia mis hojas no se llaman hoja1,
hoja2, ademas dije 160 hojas, pero realmente tengo 470, voy a ver
el enlace, pero si se te ocurre algo por favor dimelo.

Gracias de nuevo
Juan M ha escrito:

hola

> Necesito ayuda para completar una tabla con informacion que hay en
> varias hojas de un mismo libro.
> Tengo un libro con unas 160 hojas y necesito hacer una tabla con
> informacion que hay en las mismas celdas, pero en distintas hojas de un
> mismo libro, es decir:
>
> dato 1 dato2 dato 3
> hoja 1 celda a1 hoja 1 celda F14
> hoja 2 celda a1 hoja 2 celda F14
>
>
> Gracias

Si tus hojas se llaman Hoja1; Hoja2 puedes hacer lo que pides con la
formula Indirecto de la siguiente forma

=INDIRECTO("hoja"&FILA(2:2)&"!$a$1")

Esta forma es un poco 'peligrosa' ya que es volatil, lo que pude llegar a
ralentizar la hoja en exceso ya que hablamos de por lo menos 3*160
referencias, mas los calculos que deba realizar. Si quieres profundizar un
poco en esto revisa el siguiente enlace.

http://www.decisionmodels.com/calcsecretsi.htm

Dependiendo de los resultados que obtengas comentas? Quiza podamos hacer una
macro que capture los datos.

Un saludo
Juan
Respuesta Responder a este mensaje
#3 Juan M
21/11/2006 - 14:46 | Informe spam
Hola

Gracias Juan, pero por desgracia mis hojas no se llaman hoja1,
hoja2, ademas dije 160 hojas, pero realmente tengo 470, voy a ver
el enlace, pero si se te ocurre algo por favor dimelo.



A falta de mas datos, como rangos donde estan los datos, hojas utiles de
donde vayas a extraer los datos, si quieres una macro en el libro o en otro
desde donde traigas la informacion, si solo son tres columnas de datos o son
mas... los arreglos del libro. En fin todo lo 'relevante' para poder hacer
una cosa mas eficaz y no demasiado generica.

Prueba la siguiente macro (copiala en un modulo estandar)

Comentas como resulto?

Un saludo
Juan

Inicio del codigo

Sub CopiaDatos()
Dim wshResumen As Worksheet
Dim Hoja As Worksheet
Dim i As Long

'Si la hoja Resumn no existe la crea
If Not HojaExiste("Resumen") Then
Set wshResumen = ThisWorkbook.Worksheets.Add
wshResumen.Name = "Resumen"
Else
Set wshResumen = ThisWorkbook.Worksheets("Resumen")
'La siguiente instruccion elimina los contenidos
'de las celdas (quitar el comentario)
'sino los nuevos datos se añadiran a los existentes
' wshResumen.Cells.ClearContents
End If

With wshResumen
.Range("A1") = "Dato1"
.Range("B1") = "Dato2"
.Range("C1") = "Dato3"
End With
With wshResumen
i = .Range("A" & .Rows.Count).End(xlUp).Row + 1
'controla la fila donde se insertan los datos
Debug.Print i
End With
For Each Hoja In ThisWorkbook.Worksheets
If Hoja.Name <> "Resumen" Then
With Hoja
wshResumen.Range("A" & i).Value = .Range("A1").Value
wshResumen.Range("B" & i).Value = .Range("F14").Value
'Aqui copiaria el resto de rangos que quiera rescatar
End With
i = i + 1
End If
Next Hoja
End Sub

Function HojaExiste(ByVal strNombre As String) As Boolean
'Autor: Vinchenzo vinç
'fecha: 4/11/06
On Error Resume Next
HojaExiste = Worksheets(strNombre).Type
End Function

fin codigo
Respuesta Responder a este mensaje
#4 AnSanVal
21/11/2006 - 21:02 | Informe spam
Este ejemplo crea en Hoja1 de Libro2, una lista en las columnas A, B y C
con los datos de todas las hojas de Libro1, contenidos en las celdas A1, F14
y J8. Tú deberás adaptarlo a tu caso, pues tu información es incompleta:

Sub MiLista()
Dim hoja As Object
For Each hoja In Workbooks("Libro1").Sheets
Workbooks("Libro2").Sheets("Hoja1").Cells(Cells(65535, 1).End(xlUp).Row
+ 1, 1). _
Value = hoja.Cells(1, 1).Value
Workbooks("Libro2").Sheets("Hoja1").Cells(Cells(65535, 2).End(xlUp).Row
+ 1, 2). _
Value = hoja.Cells(14, 6).Value
' la próxima me la invento (no lo has dicho)
Workbooks("Libro2").Sheets("Hoja1").Cells(Cells(65535, 3).End(xlUp).Row
+ 1, 3). _
Value = hoja.Cells(8, 10).Value
Next hoja
End Sub

Saludos desde Tenerife.
**************************************
"bbassn" escribió en el mensaje
news:
Gracias Juan, pero por desgracia mis hojas no se llaman hoja1,
hoja2, ademas dije 160 hojas, pero realmente tengo 470, voy a ver
el enlace, pero si se te ocurre algo por favor dimelo.

Gracias de nuevo
Juan M ha escrito:

hola

> Necesito ayuda para completar una tabla con informacion que hay en
> varias hojas de un mismo libro.
> Tengo un libro con unas 160 hojas y necesito hacer una tabla con
> informacion que hay en las mismas celdas, pero en distintas hojas de un
> mismo libro, es decir:
>
> dato 1 dato2 dato 3
> hoja 1 celda a1 hoja 1 celda F14
> hoja 2 celda a1 hoja 2 celda F14
>
>
> Gracias

Si tus hojas se llaman Hoja1; Hoja2 puedes hacer lo que pides con la
formula Indirecto de la siguiente forma

=INDIRECTO("hoja"&FILA(2:2)&"!$a$1")

Esta forma es un poco 'peligrosa' ya que es volatil, lo que pude llegar a
ralentizar la hoja en exceso ya que hablamos de por lo menos 3*160
referencias, mas los calculos que deba realizar. Si quieres profundizar
un
poco en esto revisa el siguiente enlace.

http://www.decisionmodels.com/calcsecretsi.htm

Dependiendo de los resultados que obtengas comentas? Quiza podamos hacer
una
macro que capture los datos.

Un saludo
Juan



Respuesta Responder a este mensaje
#5 bbassn
22/11/2006 - 08:05 | Informe spam
Buenos días,
He seguido paso a paso tus intrucciones y funciona perfectamente
gracias a Dios, xq ya me veia metiendo datos y comiéndome las uvas a
la vez.
Gracias
Juan M ha escrito:

Hola

> Gracias Juan, pero por desgracia mis hojas no se llaman hoja1,
> hoja2, ademas dije 160 hojas, pero realmente tengo 470, voy a ver
> el enlace, pero si se te ocurre algo por favor dimelo.
>
A falta de mas datos, como rangos donde estan los datos, hojas utiles de
donde vayas a extraer los datos, si quieres una macro en el libro o en otro
desde donde traigas la informacion, si solo son tres columnas de datos o son
mas... los arreglos del libro. En fin todo lo 'relevante' para poder hacer
una cosa mas eficaz y no demasiado generica.

Prueba la siguiente macro (copiala en un modulo estandar)

Comentas como resulto?

Un saludo
Juan

Inicio del codigo

Sub CopiaDatos()
Dim wshResumen As Worksheet
Dim Hoja As Worksheet
Dim i As Long

'Si la hoja Resumn no existe la crea
If Not HojaExiste("Resumen") Then
Set wshResumen = ThisWorkbook.Worksheets.Add
wshResumen.Name = "Resumen"
Else
Set wshResumen = ThisWorkbook.Worksheets("Resumen")
'La siguiente instruccion elimina los contenidos
'de las celdas (quitar el comentario)
'sino los nuevos datos se añadiran a los existentes
' wshResumen.Cells.ClearContents
End If

With wshResumen
.Range("A1") = "Dato1"
.Range("B1") = "Dato2"
.Range("C1") = "Dato3"
End With
With wshResumen
i = .Range("A" & .Rows.Count).End(xlUp).Row + 1
'controla la fila donde se insertan los datos
Debug.Print i
End With
For Each Hoja In ThisWorkbook.Worksheets
If Hoja.Name <> "Resumen" Then
With Hoja
wshResumen.Range("A" & i).Value = .Range("A1").Value
wshResumen.Range("B" & i).Value = .Range("F14").Value
'Aqui copiaria el resto de rangos que quiera rescatar
End With
i = i + 1
End If
Next Hoja
End Sub

Function HojaExiste(ByVal strNombre As String) As Boolean
'Autor: Vinchenzo vinç
'fecha: 4/11/06
On Error Resume Next
HojaExiste = Worksheets(strNombre).Type
End Function

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