给定一个数据集,就是说10列。在A列中我有日期,在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
答案 0 :(得分:2)
使用Offset
这样的方法:
ActiveSheet.Range("A1:AR1617").Offset(1, 0).SpecialCells(xlCellTypeVisible).Copy
上面的代码复制了不包括标题的过滤数据 这是你正在尝试的吗?
答案 1 :(得分: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