Filtrar datos de varias hojas a una

Tengo un libro de excel donde llevo mi contabilidad y necesito sacar un reporte pór dia mis hojas todas tienen los mismos campos
EJEMPLO HOJA1
ESTOS MIS CABEZERAS
A B C D E F G H
1fecha empresa banco cuenta deposito costo gasto saldo
2 01/01/12 ALFIL BANAM 100 1000 1000
3 01/01/12 ALFIL BANAM 100 200 800
4 04/04/12 alfil banam 100 50 750
y asi lo alimento diario
y en la hoja2
tengo lo mismo
a b c d e f g h
fecha empresa banco cuenta deposito costo gasto saldo
1 01/01/12 ALFIL IXE 200 2000 2000
201/01/12 ALFIL IXE 200 300 1700
304/04/12 alfil ixe 200 500 2200
y asi lo que quiero es sacar un reporte en una sola hoja
que me salga mas o menos asi si yo seleccionno el reporte por fecha
en la hoja reportes yo seleccione
a b c d e f g
1FECHA EMPRESA BANCO CUENTA DEPOSITO COSTO GASTO
2 01/01/12 ALFIL BANAM 100 1000
3 01/01/12 ALFIL BANAM 100 200
401/01/12 ALFIL BANAM 100 TOTAL 1000 200
501/01/12 ALFIL IXE 200 2000
601/01/12 ALFIL IXE 200 300
701/01/12 ALFIL IXE 200 TOTAL 2000 300

1 respuesta

Respuesta
1

Te mando una macro.
Instrucciones
1. Abre tu libro
2. Crea una hoja llamada control y estando en hoja control
3. Para abrir Vba-macros y poder pegar la macro, Presiona ALt + F11
4. En el menú elige Insertar / Módulo
5. En el panel del lado derecho copia la macro
6. Para ejecutarla presiona F5
La macro va a leer todas tus hojas y filtrar por la fecha que captures cuando la macro te la pida.
'***Macro***
Sub fechaempresa()
Dim fecha As Date
Worksheets("control").Select
Application.ScreenUpdating = False
'Por.Dam
ActiveSheet.Cells.Clear
fecha = InputBox("Fecha : ")
For i = 1 To Sheets.Count
Select Case Sheets(i).Name
Case "control"
'esta hoja no se procesa
Case "otrahoja"
'esta hoja no se procesa
Case Else
hoja = Worksheets(i).Name
Worksheets(hoja).Select
Columns("A:H").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=fecha, Operator:=xlAnd
Range("A1:H1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("control").Select
ufila = Range("A" & Rows.Count).End(xlUp).Row
Range("A" & ufila + 1).Select
ActiveSheet.Paste
End Select
Next
'Arregla hoja control
Columns("A:H").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="FECHA"
Range("A2:H2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Delete
Selection.AutoFilter
If Application.WorksheetFunction.CountA(Columns("A")) = 0 Then
MsgBox ("No hay registros con fecha " & fecha)
Else
hoja = Worksheets(1).Name
Worksheets(hoja).Select
Range("A1:H1").Select
Selection.Copy
Worksheets("control").Select
Range("A1").Select
ActiveSheet.Paste
'Ordenar hoja control
Columns("A:H").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlAscending, Key3:=Range("C2"), Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
xlSortNormal
'Subtotales
Columns("A:H").Select
Selection.RemoveSubtotal
Range("A1:H1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Subtotal GroupBy:=4, Function:=xlSum, TotalList:=Array(5, 6, 7, 8) _
, Replace:=True, PageBreaks:=False, SummaryBelowData:=True
End If
Application.ScreenUpdating = True
MsgBox ("Proceso Terminado")
End Sub
'***Macro***

Saludos. Dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas