Extraer datos de varias hojas

Me pueden ayudar con una macro que extraiga datos de varias hojas(100) que se encuentran en un solo archivo. Los datos están siempre en las mismas columnas en cada hoja pero en diferentes filas y deberá extraer el dato de la ultima CELDA de solo esas dos columnas para después pegarlos en una hoja resumen, dentro de ese mismo archivo. Ejemplo:
Hoja(s) de donde se extraen los datos: Hoja Resumen:
Nombre de la hoja: AAA
       A B C D A B C
1 2000 ww xx 40000 1 AAA 8000 90000
2 3000 ww xx 60000 2 BBB 200 1500
3 8000 ww xx 90000
4
5
Nombre de la hoja:BBB
A B C D
1 500 ww xx 2000
2 1700 ww xx 4500
3 3500 ww xx 6800
4 200 ww xx 1500
5

1 respuesta

Respuesta
1
Eesta vez te daré directrices para que resuelvas tu problema, cualquier cosa, me consultas.
1. Todas las hojas las encuentras en una colección llamada Sheets
2. La propiedad count de la colección te dice cuantas hojas tienes (Sheets. Count)
3. Puedes referenciar una hoja cualquiera mediante esta colección utilizando su índice o nombres.
Ej:
Sheets(1) 'La primera hoja
Sheets("Hoja1") 'La hoja de nombre "Hoja1"
4. Puedes obtener el nombre de la primera hoja con Sheets(1). Name
5. Puedes ir a la última fila ocupada de una columna con la instrucción (ejemplo: columna A)
Una_Hoja.Range("A" & Cells. Rows. Count).End(xlUp). Row
--------------------
Espero que sea suficiente, y si no lo es, pregunta con toda confianza...
Hola!
Me pueden ayudar con una macro que extraiga datos de varias hojas(100) que se encuentran en un solo archivo.Los datos están siempre en las mismas columnas en cada hoja pero en diferentes filas y deberá extraer el dato de la ultima CELDA de solo esas dos columnas para después pegarlos en una hoja resumen, dentro de ese mismo archivo. Ejemplo:
Hoja(s) de donde se extraen los datos: Hoja Resumen:
Nombre de la hoja: AAA
       A B C D A B C
1   2000 ww xx 40000                                                        1  AAA  8000  90000
2   3000 ww xx 60000                                                        2  BBB    200    1500
3   8000 ww xx 90000
4
5
Nombre de la hoja:BBB
A B C D
1 500 ww xx 2000
2 1700 ww xx 4500
3 3500 ww xx 6800
4 200 ww xx 1500
5
Muchas gracias por su ayuda.
Saludos
Hola granpeke,
No soy muy conocedor de macros pero estuve construyendo este código y el problema es que me pega toda la columna completa y no solo el ultimo dato de esa columna. ¿Me puedes decir en que estoy mal?
Sub prueba1()
Dim ultima As Double
Dim DestSh As Worksheet
Dim sht As Worksheet
Set DestSh = Sheets("Reporte")
For Each sht In ActiveWorkbook.Worksheets
sht.Select
ultima = Range("B" & Cells.Rows.Count).End(xlUp).Row
With DestSh
If IsError(Application.Match(sht.Name, _
Array(DestSh.Name, "Information", "Catalogo"), 0)) Then
libre = .Range("F65536").End(xlUp).Row + 1
sht.Range("B7:B" & ultima).Copy Destination:=.Range("F" & libre)
Application.CutCopyMode = False
End If
End With
Next sht
Sheets("Reporte").Select
End Sub
Gracias.
granpeke,
De verdad te agradezco tu gran ayuda. La mayoría de las veces la solución esta en lo más simple. Gracias de nuevo y saludos.
Supongamos que "ultima" tiene el valor 50, al decir:
Range("B7:B" & ultima) estás diciendo Range("B7:B50"), por tanto le estas diiendo que copie el rango "B7:B50" desde tu hoja hacia el resumen. Si quieres copiar sólo la celda B50, deberías utilizar Range("B50"), y de forma más genérica Range("B" & ultima).
Espero haberte aclarado. Cualquier duda, intentaré responderte a la brevedad.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas