使用excel中的VBA选择并复制特定数量的筛选行
我在一个巨大的列表上使用AutoFilter,希望复制前200行可见的内容。我的代码是静态的,因为它只选择第201行。我希望有一个动态代码,当使用过滤器(不包括标题)时,我在其中选择第一个可见的200行。这就是我的代码今天的样子:使用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
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。