Excel VBA筛选和复制粘贴数据

给定一个数据集,可以说10列。 在A列我有date,在B列我有%。 我想筛选仅A列2014年的数据和列B <70%,并将筛选的数据复制粘贴到另一个工作表。 我如何去编写下一行的代码来获取过滤数据的第一行?

ActiveSheet.Range("$A$1:$AR$1617").AutoFilter Field:=5, Operator:= _ xlFilterValues, Criteria2:=Array(0, "12/28/2014") ActiveSheet.Range("$A$1:$AR$1617").AutoFilter Field:=14, Criteria1:="<0.7" _ , Operator:=xlAnd 

使用这样的Offset方法:

 ActiveSheet.Range("A1:AR1617").Offset(1, 0).SpecialCells(xlCellTypeVisible).Copy 

以上代码复制不包括标题的过滤数据。
这是你想要的吗?

 ActiveSheet.Range("$A$1:$AR$1617").specialcells(xlcelltypevisible).copy sheets("Sheet2").range("A1") 

作为问题的第一部分请求,仅将可见/过滤的单元格复制到新的工作表中。

要获取第一行数据,假设有数据,并且在第1行中有标题,并将其粘贴到新工作表的下一个可用行。

 Activesheet.range("A1").end(xldown).entirerow.copy sheets("Sheet2").range("A65536").end(xlup).offset(1,0) 

还有一个循环解决scheme,将数据从sheet1复制到sheet2,并提供A列总是包含数据(对于非常大的数据集,速度会慢一点):

 Sub copyFilteredData(ByVal iYear As Integer, ByVal dPercent As Double) Dim rCell As Range For Each rCell In Sheet1.Range("A1:A65536").SpecialCells(xlCellTypeConstants) If Year(rCell.Offset(0, 4).Value) = iYear And rCell.Offset(0, 13).Value < dPercent Then rCell.EntireRow.Copy Sheet2.Range("A65536").End(xlUp).Offset(1, 0) End If Next rCell End Sub 

拨打电话:

 copyfilteredData 2014,0.7