2014-05-15 83 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