Copiar solo los datos de un filtro avanzado

Hola Tavopz...
Mi nombre es Luisfer,
Amigo acá tengo una macros que copia datos de un filtro especifico y me los copia en otra hoja... El funciona excelente, el único problema que no he podido solucionar es que cuando copie los datos en la otra hoja, los vaya colocando al final de los datos almacenados como especie de una Base de Datos... Y no me los sobre escriba...
Sub PegaFilt()
'Indica una celda de la base filtrada:
UnaCelda = "O14"
'Copiado de celdas visibles
Range(UnaCelda).CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
'Ir a celda de destino
Windows("ElOtroLibro.xls").Activate
Sheets("OtraHoja").Activate
Range("A1").Select
'pegado de valores
Selection.PasteSpecial Paste:=xlValues
'Pegado de formatos
Selection.PasteSpecial Paste:=xlFormats
End Sub
Le agradezco su colaboración...

1 Respuesta

Respuesta
1
Esto ocurre porque siempre estás seleccionando la celda A1 de la Hoja "OtraHoja" para pegar los datos.
Como cuando vas a pegar el nuevo filtro, no sabes cuántas celdas vas a tener ocupadas, es necesario que identifiques este dato para modificar tu código.
Una alternativa que he usado en ocasiones es usar la función =CONTARA(A:A) o =COUNTA(A:A) para saber cuántas celdas de la columna A contienen datos. Existen otras alternativas de hacerlo pero a mi me parece práctico aprovechar las herramientas de excel para lograrlo.
Así pues, tu código podría quedar así:
Sub PegaFilt()
'Indica una celda de la base filtrada:
UnaCelda = "O14"
'Copiado de celdas visibles
Range(UnaCelda).CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
'Ir a celda de destino
Windows("ElOtroLibro.xls").Activate
Sheets("OtraHoja").Activate
Set R = Worksheets("OtraHoja").Range("A:A")
x = Application.WorksheetFunction.CountA(R)
Range("A" & LTrim(Str(x + 1))).Select

'pegado de valores
Selection.PasteSpecial Paste:=xlValues
'Pegado de formatos
Selection.PasteSpecial Paste:=xlFormats
End Sub
Hola Tavopz...
Excelente, usted es un duro en esto, funciona perfecto... Gracias por su colaboración
Espero ponerme nuevamente en contacto con usted.
ATT; Luis Martinez

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas