VBA:自动过滤范围并复制到现有工作表

时间:2017-01-16 10:02:30

标签: excel vba

很抱歉寻求帮助,但我一直在尝试很多宏,但没有人能胜任这项工作。我不知道在哪里寻找解决方案。

  • 我有一张名为“ABC”的表格,其中我将用户输入的数据输入到A:F范围内(从A2开始,在热处理器下方,可能高达20.000行)。
  • 在G栏上,我有标准(是/否)

所以我想将所有行复制(粘贴值和保持格式化)到A:F,其中G =“是”到另一个名为“ANAF ANG”的工作表到指定范围内(相同的A:F,从A2开始)

注意:复制数据的初始工作表必须在完成后清除过滤器。

怎么......?

2 个答案:

答案 0 :(得分:0)

您可以使用此评论代码:

Sub main()
    With Sheets("ABC") '<--| reference your sheet
        With .Range("G1", .Cells(.Rows.Count, 1).End(xlUp)) '<--| reference its column "A:G" range from row 1 down to column "A" last not empty row
            .AutoFilter Field:=7, Criteria1:="yes" ''<--| filter referenced range on its 7th column (i.e. column "G") with "yes" values
            If Application.WorksheetFunction.Subtotal(103, .Resize(, 1)) > 1 Then .Resize(.Rows.Count - 1, 6).Offset(1).SpecialCells(xlCellTypeVisible).Copy Destination:=Worksheets("ANAF ANG").Range("A2")
        End With
        .AutoFilterMode = False
    End With
End Sub

答案 1 :(得分:0)

请勿尝试从头开始编写VBA脚本,使用Excel宏录制。如果您知道如何以交互方式实现结果,则会为您创建必要的代码。如果你仍然不满意你可以调整它的代码,那么 - 比阅读参考手册要好几个小时,只是为了让你开始。