Excel - Mejorar esta macro para pegar en orden ascendente

 
Vista:
sin imagen de perfil
Val: 44
Ha aumentado 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

Mejorar esta macro para pegar en orden ascendente

Publicado por santi (24 intervenciones) el 24/05/2019 10:12:55
Buenos días,



Tengo una macro que realiza un filtro avanzado en diferentes hojas, selecciona solo los elementos filtrados y los pega en otra hoja diferente. Lo que necesito es que esta selección la pegue desde una fila hacia arriba, por tanto que la pegue de la fila 10 en ascendente hacia la fila 1.

El problema que tengo es que cuando filtro no siempre tengo el mismo número de filas, por eso no puedo pegar un rango fijo, y por la configuración de la hoja de destino, la información (que actualmente ponemos manualmente) se pone de la fila 10 si tienes solo un ítem, en la 10 y la 9 si tienes dos y así sucesivamente hasta 10 lineas.

La macro es esta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub COPIARFILTROENERO()
'
'
Sheets("mayo19").Select
Range("A6:D1301").Select
Application.CutCopyMode = False
Range("A5:D1301").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("mayo19!Criteria"), Unique:=False
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Sheets("PREVISIONES SQ").Select
Range("AW15").Select
ActiveSheet.Paste
End Sub



En la casilla AW15 es donde quiero pegar la información, pero hacia AW14 AW13...


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
Imágen de perfil de Antoni Masana
Val: 4.151
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Mejorar esta macro para pegar en orden ascendente

Publicado por Antoni Masana (1459 intervenciones) el 24/05/2019 11:30:00
Veamo

Una vez realizado el Selection.Copy debes copiarlo en algún lugar provisional y después al destino deseado de la forma deseada.

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
Sub COPIARFILTROENERO()
    Dim Fila as Long, Dest as Long
 
    Sheets("mayo19").Select
    Range("A6:D1301").Select
 
    Application.CutCopyMode = False
 
    Range("A5:D1301").AdvancedFilter Action:=xlFilterInPlace, _
                                     CriteriaRange:=Range("mayo19!Criteria"), _
                                     Unique:=False
 
    Selection.SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
 
    Sheets("PREVISIONES SQ").Select
    Range("XAA1").Select
    ActiveSheet.Paste
 
    Fila=1
    Dest=10
    While Cells(Fila, "XAA")<> ""
       IF Dest>0 Then
           Cells(Dest, "AW"= Cells(Fila, "XAA")
           Cells(Dest, "AX"= Cells(Fila, "XAB")
           Cells(Dest, "AY"= Cells(Fila, "XAC")
           Cells(Dest, "AZ"= Cells(Fila, "XAD"): Dest = Dest - 1
       End If
       Fila = Fila + 1
    Wend
    ' --- Limpio
 
   Range("XAA1:XAD" & Fila)
    Selection.ClearContents
End Sub


Saludos.
\\//_
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