-3

当第一个输入值等于时,我正在尝试将行从工作表自动复制到另一个工作表。SheetCat

因此,如果在(第一张工作表)Cat中输入,则自动复制到单独的工作表(我们称之为)。Column AmasterCat

基本上,工作表Cat应始终包含masterwhere中所有行的精确副本Column A = Cat

我正在尝试实现的一个示例如下所示:

掌握:

A   B C D E F
Cat     4 5 6
Y   1 2 3 4 5
Cat     1 2 3

猫床单:

A   D E F
Cat 4 5 6
Cat 1 2 3

这是我尝试过的:

Sub FilterAndCopy()
    Dim sht1 As Worksheet, sht2 As Worksheet

    Set sht1 = Sheets("Master")
    Set sht2 = Sheets("Cat")

    sht2.UsedRange.ClearContents

    With sht1.Cells(1, 1).CurrentRegion
        .AutoFilter
        .AutoFilter 1, "Cat"
        .SpecialCells(xlCellTypeVisible).EntireRow.Copy sht2.Cells(1, 1)
        .AutoFilter
    End With
End Sub

但是行中有一个错误:

        .SpecialCells(xlCellTypeVisible).EntireRow.Copy sht2.Cells(1, 1)
4

1 回答 1

1

似乎您必须跳过列 B 和 C,我认为从您的另一篇文章中它们是隐藏的

然后您可以取消隐藏 B 列和 C 列,复制/粘贴然后在这两张表中隐藏/删除它们

Option Explicit

Sub FilterAndCopy()
    Dim sht1 As Worksheet, sht2 As Worksheet

    Set sht1 = Sheets("Master")
    Set sht2 = Sheets("X")

    sht2.UsedRange.ClearContents
    Dim rng As Range

    With sht1.Cells(1, 1).CurrentRegion
        .Range("B:C").EntireColumn.Hidden = False ' unhide columns B and C
        .AutoFilter
        .AutoFilter 1, "X"
        .SpecialCells(xlCellTypeVisible).Copy sht2.Cells(1, 1)
        .AutoFilter

        .Range("B:C").EntireColumn.Hidden = True ' hide columns B and C
        sht2.Range("B:C").EntireColumn.Delete ' delete 'sht2' columns B and C
    End With
End Sub
于 2018-10-15T07:26:33.483 回答