使用 VBA 将过滤后的数据复制到另一个工作表

Ana*_*dey 5 excel vba copy filter

我有两张床单。一个具有完整的数据,另一个基于应用于第一张纸的过滤器。

数据表Data
名称: 过滤表名称:Hoky

为简单起见,我只取了一小部分数据。我的目标是根据过滤器从数据表中复制数据。我有一个宏,它以某种方式工作,但它是硬编码的,是一个录制的宏。

我的问题是:

  1. 行数每次都不一样。(人工努力)
  2. 列不按顺序。

在此处输入图片说明 在此处输入图片说明

Sub TESTTHIS()
'
' TESTTHIS Macro
'
'FILTER
Range("F2").Select
Selection.AutoFilter
ActiveSheet.Range("$B$2:$F$12").AutoFilter Field:=5, Criteria1:="hockey"

'Data Selection and Copy
Range("C3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Hockey").Select
Range("E3").Select
ActiveSheet.Paste

Sheets("Data").Select
Range("D3").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Hockey").Select
Range("D3").Select
ActiveSheet.Paste

Sheets("Data").Select
Range("E3").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Hockey").Select
Range("C3").Select
ActiveSheet.Paste

End Sub
Run Code Online (Sandbox Code Playgroud)

Arp*_*ini 12

最好的方法

下面的代码是复制DBExtract表中的可见数据,粘贴到duplicateRecords表中,只有过滤值。我选择的范围是我的数据可以占用的最大范围。您可以根据需要更改它。

  Sub selectVisibleRange()

    Dim DbExtract, DuplicateRecords As Worksheet
    Set DbExtract = ThisWorkbook.Sheets("Export Worksheet")
    Set DuplicateRecords = ThisWorkbook.Sheets("DuplicateRecords")

    DbExtract.Range("A1:BF9999").SpecialCells(xlCellTypeVisible).Copy
    DuplicateRecords.Cells(1, 1).PasteSpecial


    End Sub
Run Code Online (Sandbox Code Playgroud)

  • SpecialCells(xlCellTypeVisible) 正是我正在寻找的。谢谢! (2认同)