Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用excel中的VBA选择并复制特定数量的筛选行_Vba_Excel_Autofilter - Fatal编程技术网

使用excel中的VBA选择并复制特定数量的筛选行

使用excel中的VBA选择并复制特定数量的筛选行,vba,excel,autofilter,Vba,Excel,Autofilter,我在一个巨大的列表上使用AutoFilter,希望复制前200行可见的内容。我的代码是静态的,因为它只选择第201行。我希望有一个动态代码,当使用过滤器(不包括标题)时,我在其中选择第一个可见的200行。这就是我的代码今天的样子: Sheets("Sheet1").Select Range("A2:A201").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A1").Sel

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

这将仅复制列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

这将仅复制列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

我就是这样解决的

前200个可见行从Sheet1 A11(2列)复制到Sheet2 A2。 以及从第1页K11(3列)到第2页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

我就是这样解决的

前200个可见行从Sheet1 A11(2列)复制到Sheet2 A2。 以及从第1页K11(3列)到第2页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

请检查这个链接,它有你的答案。谢谢你的链接!这帮助我找到了解决办法。我将我的最终VBA代码发布在下面的.np中。您应该避免使用
。请在代码中选择
。请检查这个链接,它有你的答案。谢谢你的链接!这帮助我找到了解决办法。我将我的最终VBA代码发布在下面的.np中。您应该避免使用
。请在代码中选择
。这仍然只复制前200行,而不复制前200行。我只将134行复制到Sheet2。这仍然只复制前200行,而不复制前200行。我只将134行复制到Sheet2。