2014-05-15 80 views
2

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

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 
+1

和你的代码的问题是? –

+0

我不知道如何编写下一行代码,它将我带到我的第一行数据 – user3639909

+0

这将带给我* – user3639909

回答

2

使用Offset方法是这样的:

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

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

+0

是的,这是我想要实现的。 – user3639909

+0

你的方法工作得很好抱歉,我不能upvote you – user3639909

+0

你至少可以接受它通过标记检查:) – L42

0
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) 

和循环解决方案,将复制的工作表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 
+0

谢谢你的回答jaybee。不幸的是,我不能赞成你,因为我没有最少15个代表。 <3 – user3639909