复制autofiltered范围,VBA的Excel

我写了下面的代码:

  1. 将自动筛选应用于所选workbook中的特定workbook
  2. 将除autofiltered range之外的数据复制到另一个workbook

这里是代码:

  m = 2 For i = 1 To work_book.Worksheets.Count With work_book.Sheets(i) If (.UsedRange.Rows.Count > 1) Then 'apply filters .UsedRange.AutoFilter field:=2, Criteria1:=array_of_account_numbers, Operator:=xlFilterValues .UsedRange.AutoFilter field:=1, Criteria1:=array_of_debit_or_credits, Operator:=xlFilterValues 'select only visible cells after autofilter is applied On Error Goto am = destination_workbook.Sheets(1).UsedRange.Rows.Count + 1 Intersect(.UsedRange, .UsedRange.Offset(1)).SpecialCells(xlCellTypeVisible).Copy destination_workbook.Sheets(1).Range("A" & m) a: End If End With 

但是,macros持续复制一些垃圾。 这意味着除了autofiltered range外,它还会从每个sheet前三rows复制。

我该如何解决这个问题? 我会感谢您的帮助和答案。

编辑

这是工作表中数据的示例

数据的例子

filter应用于Criteria1(<> 60,<> 50)和Criteria2(<> 1470,<> 1450)

.UsedRange将获取源表单上的所有数据,而不仅仅是自动筛选结果下面的数据。

您在Intersect...Copy语句中使用的Offset应该是您要忽略的自动筛选结果上方的行数,而不是值1。

如果你知道你有多less个标题行:

 numHeaderRows = 5 For i = 1 To work_book.Worksheets.Count With work_book.Sheets(i) If (.UsedRange.Rows.Count > 1) Then 'apply auto-filters starting at the row directly above the start of the data. .UsedRange.Offset(numHeaderRows-1).AutoFilter field:=2, Criteria1:=array_of_account_numbers, Operator:=xlFilterValues .UsedRange.Offset(numHeaderRows-1).AutoFilter field:=1, Criteria1:=array_of_debit_or_credits, Operator:=xlFilterValues 'select only visible cells after autofilter is applied On Error Goto am = destination_workbook.Sheets(1).UsedRange.Rows.Count + 1 Intersect(.UsedRange, .UsedRange.Offset(numHeaderRows)).SpecialCells(xlCellTypeVisible).Copy destination_workbook.Sheets(1).Range("A" & m) a: End If End With Next