Excel - AGRUPAR COLUMNAS DE DISTINTAS HOJAS EN UNA UNICA COLUMNA ORDENADA Y ELIMINANDO REPETICIONES

 
Vista:
sin imagen de perfil
Val: 179
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

AGRUPAR COLUMNAS DE DISTINTAS HOJAS EN UNA UNICA COLUMNA ORDENADA Y ELIMINANDO REPETICIONES

Publicado por Quico (106 intervenciones) el 26/02/2019 20:31:19
Seria genial encontrar una formula que lo pudiera hacer automáticamente sin necesidad de una 'macro' o 'tablas dinámicas', pero supongo que una macro será la única forma de que 1 columna de datos en varias hojas, se agrupen en una única columna.

He montado una macro (Boton: Unir columnas) con el "grabador de macros", pero no se ponerle las condiciones.

¿Que condiciones?

1. Los valores están en la columna (B) y la (D) de cada página, de un total de 4 páginas. (siempre desde las fila 7 en adelante)
Por ejemplo:
Hoja 1 --> Tiene la columna B y D
Hoja 2 --> Tiene la columna B y D
Hoja 3 --> Tiene la columna B y D
Hoja 4 --> Tiene la columna B y D

2. Estos valores serán copiados y llevados a su correspondiente columna B y D ( a partir de la fila 7) de la página 'Master', que agrupa y muestra todo de forma sincronizada.

Hoja 'Master' --> Tiene la agrupacion de los datos B y D en sus respectivas columna B y D

3. Las COLUMNAS 'Master' B y D han de tener las siguientes condiciones:
- Los valores de las columnas quedan ordenados de menor a mayor.
- Si se repite el valor (que puede ocurrir) solo deja 1 para evitar que se repita el valor varias veces.
- Si hay celdas vacías en B y D de alguna página, no pasa nada. Lo importante es agrupar la info que exista.


¿Alguien podría ayudarme a que esto funcione?

Gracias.
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
sin imagen de perfil
Val: 179
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

AGRUPAR COLUMNAS DE DISTINTAS HOJAS EN UNA UNICA COLUMNA ORDENADA Y ELIMINANDO REPETICIONES

Publicado por Quico (106 intervenciones) el 28/02/2019 06:38:31
He conseguido exportar datos de 2 columnas (B y D) de 4 hojas a una hoja MASTER.
La macro también me consigue eliminar los valores repetidos de cada columna y finalmente ordenarlas.

Sin embargo, algo me ocurre en una de las columnas

Columna A --> Muestra correctamente todos los valores ordenados de LFPWS-0001 a LFPWS-0040. Ok!!
Columna B --> Deberia agrupar de AAA-0001 a EEE-0010. ¡Pero no!
Por alguna razón corta en EEE-0008 y se olvida de los 2 últimos valores.(EEE-0009 y EEE-0010

Aparte de que todas las celdas son sin bordes, y mete alguno que otro.

¿Alguien podría revisar que falla en esta macro? Gracias


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
Sub UnirEliminarOrdenarColumnas()
Dim i As Long
Dim fila As Long
Application.ScreenUpdating = False
 
'copio los encabezados a usar
Hoja2.Range("B7", "D7").Copy
 
'activo la hoja que lo concentra y pego los encabezados
Sheets("Master").Activate
ActiveSheet.Range("B7").Select
ActiveSheet.Paste
 
'esto le quita la propiedad de seguir pegando los datos copiados
Application.CutCopyMode = False
 
' bucle que pasara por las doce hojas
    For i = 1 To 5
 
'como i pasara de 1 en 1 hasta cinco, cada vuelta de i representara el numer de hoja
  Sheets(i).Activate
 
 'determino la ultima celda ocupada de la hoja en la que se encuentra
    fila = ActiveSheet.Range("B" & ActiveSheet.Rows.Count).End(xlUp).Row
 
'si la ultiam celda con datos es la que se encuntra en la fila 1 "encabezados" pues no tiene datos que copiar
 'y pasara hasta despues de End if
  If fila <> 1 Then
 
 ' si hay datos que copiar se selecciona esos datos y se pegan en el concentrado
        ActiveSheet.Range("B7:D500" & fila).Copy
        Sheets("Master").Select
        Range("B" & ActiveSheet.Rows.Count).End(xlUp).Offset(1, 0).Select
        Selection.PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
        End If
 
  'pasamos a la sig hoja, cuando termine la 5 vuelta se saltara el Next i para finalmente terminar el codigo
    Next i
 
  'Eliminamos los valores repetidos
    ActiveSheet.Range("B7:B500").RemoveDuplicates Columns:=1, Header:=xlNo
    ActiveSheet.Range("D7:D500").RemoveDuplicates Columns:=1, Header:=xlNo
 
 
  'Ordenamos las columnas
    Range("B7:B500").Select
    ActiveWorkbook.Worksheets("Master").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Master").Sort.SortFields.Add2 Key:=Range("B7"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Master").Sort
        .SetRange Range("B7:B500")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
 
 
    Range("D7:D500").Select
    ActiveWorkbook.Worksheets("Master").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Master").Sort.SortFields.Add2 Key:=Range("D7"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Master").Sort
        .SetRange Range("D7:D500")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
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