我在一个巨大的列表中使用AutoFilter并希望复制第一个可见的200行。我的代码是静态的,因为它只选择第201行。我想要一个动态代码,我在使用过滤器时选择第一个可见的200行(不包括标题)。这就是我的代码今天的样子:
Sheets("Sheet1").Select
Range("A2:A201").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet2").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
答案 0 :(得分:2)
这将仅复制 A 列中的第一个可见的200个项目,不包括标题:
Sub AutoFilterCopyVisible()
Dim r1 As Range, r2 As Range
Set r1 = Sheets("Sheet1").AutoFilter.Range.Offset(1, 0).Resize(200, 1)
Set r2 = Sheets("Sheet2").Range("A1")
r1.Copy r2
End Sub
答案 1 :(得分:0)
以下是我的解决方法!
前200个可见行从Sheet1 A11(2列)复制到Sheet2 A2。 还有从Sheet1 K11(3列)到Sheet2 G2的200行。如果您想添加更多的复制/粘贴,只需添加以下段:
Set r = Range("K11", Range("K" & Rows.Count).End(xlUp)).SpecialCells(12)
Range(r(1), rWC).Resize(, 3).SpecialCells(12).Copy Sheet2.[G2]
以下是总宏:
Sub
Sheets("Sheet1").Select
Dim i As Long
Dim r As Range
Dim rWC As Range
Set r = Range("A11", Range("A" & Rows.Count).End(xlUp)).SpecialCells(12)
For Each rWC In r
i = i + 1
If i = 200 Or i = r.Count Then Exit For
Next rWC
Range(r(1), rWC).Resize(, 2).SpecialCells(12).Copy Sheet2.[A2]
Set r = Range("K11", Range("K" & Rows.Count).End(xlUp)).SpecialCells(12)
Range(r(1), rWC).Resize(, 3).SpecialCells(12).Copy Sheet2.[G2]
Sheets("Sheet2").Select
Range("A1").Select
End Sub