使用Excel中的VBA选择并复制特定数量的已过滤行

时间:2018-04-09 13:52:41

标签: excel vba excel-vba autofilter

我在一个巨大的列表中使用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

2 个答案:

答案 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