ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Copy filtered range (https://www.excelbanter.com/excel-programming/333932-copy-filtered-range.html)

milo

Copy filtered range
 
Hi all,

In VBA, if I auto filter a range and than do a simple copy and paste into
another worksheet only the filtered values are copied. That is good. But if I
do the same but use arrays to transfer the filtered worksheet than everything
gets transferred, even the stuff that I have filtered. Since I prefer to use
arrays rather than copy and paste, how is this done so that only the filtered
values are captured?

Roughly the non-working code I use is as follows.

Selection.AutoFilter Field:=3, Criteria1:=something
LastRow = LastRowInColumn("A")
tempArr = Range("A1:H" & CStr(LastRow)).Value
Sheets(something).Select
Range("A1:H" & CStr(LastRow)).Value = tempArr

Thanks for any tips.
Milos.

Mike Fogleman

Copy filtered range
 
This not with arrays, but it copies filtered data....from Tom Olgilvy

Sub CopyFilter()
'by Tom Ogilvy
Dim rng As Range
Dim rng2 As Range

With ActiveSheet.AutoFilter.Range
On Error Resume Next
Set rng2 = .Offset(1, 0).Resize(.Rows.Count - 1, 1) _
.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
End With
If rng2 Is Nothing Then
MsgBox "No data to copy"
Else
Worksheets("Sheet2").Cells.Clear
Set rng = ActiveSheet.AutoFilter.Range
rng.Offset(1, 0).Resize(rng.Rows.Count - 1).Copy _
Destination:=Worksheets("Sheet2").Range("A1")
End If
ActiveSheet.ShowAllData

End Sub

Mike F
"Milo" wrote in message
...
Hi all,

In VBA, if I auto filter a range and than do a simple copy and paste into
another worksheet only the filtered values are copied. That is good. But
if I
do the same but use arrays to transfer the filtered worksheet than
everything
gets transferred, even the stuff that I have filtered. Since I prefer to
use
arrays rather than copy and paste, how is this done so that only the
filtered
values are captured?

Roughly the non-working code I use is as follows.

Selection.AutoFilter Field:=3, Criteria1:=something
LastRow = LastRowInColumn("A")
tempArr = Range("A1:H" & CStr(LastRow)).Value
Sheets(something).Select
Range("A1:H" & CStr(LastRow)).Value = tempArr

Thanks for any tips.
Milos.




milo

Copy filtered range
 
Thank you Mike, I'll try it.

"Mike Fogleman" wrote:




All times are GMT +1. The time now is 04:00 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com