Excel - Macro para consolidar en excel

 
Vista:
sin imagen de perfil

Macro para consolidar en excel

Publicado por Claudio Castillo (4 intervenciones) el 25/02/2016 16:17:47
Estimados
necesito su ayuda,


tengo un archivo excel con 5 hojas, 3 de estas 5 hojas contienen los mismos nombres , cantidad y orden de columnas, pero las otras 2 hojas (entre si iguales) no tienen el mismo orden y cantidad de columnas que las primeras 3, por lo cual necesito realizar un consolidado que junte todas las columnas relevantes en una sola hoja,
pondre un ejemplo de lo que necesito:

HOJA 1 : COLUMNAS( TIPO, FECHA A, FECHA B, CUIDAD, REGIÓN,%) 100 registros (filas)
HOJA 2 : COLUMNAS( TIPO, FECHA A, FECHA B, CUIDAD, REGIÓN,%) 65 registros (filas)
HOJA 3 : COLUMNAS( TIPO, FECHA A, FECHA B, CUIDAD, REGIÓN,%) 70 registros (filas)
HOJA 4 : COLUMNAS( TIPO, CUIDAD, REGIÓN,%,FECHA 1, FECHA 2) 43 registros (filas)
HOJA 5 : COLUMNAS( TIPO, CUIDAD, REGIÓN,%,FECHA 1, FECHA 2) 150 registros (filas)

NECESITO CONSOLIDAR ASI:
HOJA 6: COLUMNAS ( TIPO, FECHA AA, FECHA BB, CUIDAD, REGION, %)

Teniendo en cuenta que FECHA AA = FECHA A Y FECHA 1 Respectivamente y FECHA BB = FECHA B Y FECHA 2 respectivamente,
y que al insertar los 100 registros de la hoja 1 en la hoja 6, cuando vaya a buscar la data de la hoja 2 empiece a insertar en la fila 101 y así sucesivamente, es decir, ir insertando abajo de los anteriores ya insertados.


espero se apiaden de mi y me puedan realizar la macro que haga este consolidado

saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Andres Leonardo
Val: 3.136
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para consolidar en excel

Publicado por Andres Leonardo (1583 intervenciones) el 25/02/2016 16:49:23
aunque poco tedioso se puede claro....

pasa un archivo ejemplo ayudaria mucho a los que intentremos ayudarte...

SAludos..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Macro para consolidar en excel

Publicado por Claudio Castillo (4 intervenciones) el 25/02/2016 16:50:58
dale, lo subo dentro de un instante
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Macro para consolidar en excel

Publicado por claudio (4 intervenciones) el 25/02/2016 18:00:54
estimados
adjunto archivo , en la hoja 6 sale lo que necesito

agradezco su ayuda o la de cualquier otro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Macro para consolidar en excel

Publicado por agustin (149 intervenciones) el 25/02/2016 22:49:46
La manera que se me ocurre es crear una hoja y poner los títulos y luego vas buscando cada título en todas las hojas y vas copiando y pegando las columnas. Eso funcionaria perfectamente si no fuese porque tienes fecha 1 y fecha 2 que son diferentes a fecha A y fecha B por lo que no los encontraría y tampoco sirve un resultado parcial ya que ambos serian iguales y no se distinguirán. Una solución sería cambiar los títulos para que los de fechas se llamen todos iguales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Macro para consolidar en excel

Publicado por agustin (149 intervenciones) el 26/02/2016 03:22:16
Mira a ver si es lo que quieres. Ha costado porque es algo demasiado a medida para ser una funcion estandarizada y aun asi puede tener fallos.
Crea una macro y mete este codigo dentro:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
Sub ConsolidarDatos()
'
' ConsolidarDatos Macro
'
' Acceso directo: Ctrl+Mayús+C
'
    Dim colOrigen As Integer
    Dim colReporte As Integer
    Dim fila As Integer
    Dim pos As Integer
    Dim titulo As String
    Dim rangoActual As Range
    Dim cell As Range
 
    Application.StatusBar = "Consolidación en progreso."
    'Desactivo el refrescado de pantalla
    Application.ScreenUpdating = False
 
    'Elimino la hoja de reporte si existe
    Application.DisplayAlerts = False
    On Error Resume Next
    ThisWorkbook.Sheets("Reporte").Delete
    On Error GoTo 0
    Application.DisplayAlerts = True
 
    'Creo la nueva hoja de reporte y la coloco la ultima
    Set hojaNueva = ThisWorkbook.Sheets.Add
    ActiveSheet.Move After:=Sheets(ActiveWorkbook.Sheets.Count)
    ActiveSheet.Name = "Reporte"
 
    'Esta variable es para saber en que posicion se tiene que empezar a pegar
    'los datos en el reporte
    pos = 2
 
    'Copio la barra de titulos de la hoja 1 a la hoja de reportes
    Set hoja = ThisWorkbook.Sheets(1)
    hoja.Range("A1:F1").Copy
    hojaNueva.Activate
    hojaNueva.Range("A1:F1").Select
    hojaNueva.Paste
    Application.CutCopyMode = False
 
    'Ajusto las columnas del reporte para que queden igual que las de la hoja 1
    For Index = 1 To 6
        hojaNueva.Columns(Index).ColumnWidth = hoja.Columns(Index).ColumnWidth
    Next Index
 
    'Recorro todas las hojas del libro excepto la del reporte
    For Each hoja In ActiveWorkbook.Sheets
        If hoja.Name <> "Reporte" Then
            'Recorro las columnas del reporte para ir buscando cada titulo en las demas hojas
            For colReporte = 1 To 6
                hoja.Activate
                Set rangoActual = Selection
                hoja.Range("A1:F1").Select
                titulo = hojaNueva.Cells(1, colReporte).Text
Buscar:
                'Busco el titulo del reporte en la hoja actual
                Set cell = Selection.Find(What:=titulo, LookIn:=xlFormulas, _
                LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False)
 
                'Si no lo encuentra y es porque son los de fechas que son distintos lo corrijo
                'y vuelvo a intentarlo
                If cell Is Nothing Then
                    If titulo = "FECHA A" Then
                        titulo = "FECHA 1"
                        GoTo Buscar
                    ElseIf titulo = "FECHA B" Then
                        titulo = "FECHA 2"
                        GoTo Buscar
                    Else
                        MsgBox "Error en el proceso. No terminó correctamente", vbExclamation Or vbOKOnly, "Error"
                        Exit Sub
                    End If
                Else
                    'Obtengo la columna donde estan los datos para este titulo en la hoja actual
                    colOrigen = cell.Column
                End If
 
                'Obtengo el rango a copiar de la hoja y lo copio y luego lo pego en el reporte en su columna correcta
                fila = hoja.Cells(hoja.Rows.Count, colOrigen).End(xlUp).Row
                hoja.Range(hoja.Cells(2, colOrigen), hoja.Cells(fila, colOrigen)).Copy
                hojaNueva.Activate
                hojaNueva.Range(hojaNueva.Cells(pos, colReporte), hojaNueva.Cells(pos + fila, colReporte)).Select
                hojaNueva.Paste
                Application.CutCopyMode = False
                hoja.Activate
                hoja.Range(rangoActual.Address).Select
            Next colReporte
 
            'Incremento la variable para poder seguir pegando los siguientes datos de otra hoja debajo de la anterior
            pos = pos + fila - 1
        End If
    Next hoja
    hojaNueva.Activate
    hojaNueva.Range("A1:F1").Select
 
    'Busco en el reporte el titulo FECHA A y lo cambio por FECHA AA
    Set cell = Selection.Find(What:="FECHA A", LookIn:=xlFormulas, _
    LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False)
    cell.Value = "FECHA AA"
 
    'Busco en el reporte el titulo FECHA B y lo cambio por FECHA BB
    Set cell = Selection.Find(What:="FECHA B", LookIn:=xlFormulas, _
    LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False)
    cell.Value = "FECHA BB"
 
    hojaNueva.Range("A1").Select
    Set hoja = Nothing
    Set hojaNueva = Nothing
    Set rangoActual = Nothing
    Set cell = Nothing
 
    'Vuelvo a activar el refrescado de pantalla
    Application.ScreenUpdating = True
    Application.StatusBar = "Consolidación Terminada."
End Sub
Yo puse que la macro se ejecute con Ctrl+May+C para agilizar un poco. Ya nos cuentas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Macro para consolidar en excel

Publicado por claudio (4 intervenciones) el 26/02/2016 03:28:42
Estimado, gracias por la ayuda, es justo lo que necesitaba
Muchísimas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.136
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para consolidar en excel

Publicado por Andres Leonardo (1583 intervenciones) el 26/02/2016 15:21:49
Excelente que te hayan ayudad

Disculpas ... pero tuve que salir ayer po run tema eprsonal y me desvirtue del tema

Al colega Agustin como siempre gracias !!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar