如何将行自动复制到新工作表VBA Excel

时间:2018-10-10 04:34:54

标签: excel vba copy spreadsheet

我正在尝试auto-copymaster spreadsheet到另一spreadsheet的一行。当master中的输入值等于X时,就会发生这种情况。

因此,如果在X的{​​{1}}中输入Column A,则master分隔auto-copy(我们将其称为X)。基本上spreadsheet应该始终包含Sheet Xrows中所有master的精确副本。

我不确定这是否会影响Column A = X,但是auto-copy包含隐藏/取消隐藏master sheet的{​​{1}}。因此,如果在script的{​​{1}}中输入Columns,则X将被隐藏,而Column A将被显示。

下面是我要达到的目标的一个示例:

master sheet包含此信息。但是,如果在Column B,C中输入D,E,F,则只有Master Sheet可见

X

X表:

Column A

这是我尝试过的

D,E,F

但是它返回一个错误:

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

1 个答案:

答案 0 :(得分:1)

我猜您从第2行开始清除“ X”表以保留标题

在这种情况下,您可以清除所有“ X”工作表行并将标头从“主”工作表粘贴回

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
        .AutoFilter
        .AutoFilter 1, "X"
        For Each rng In .SpecialCells(xlCellTypeVisible).Areas ' loop through visible cells "groups"
            rng.Copy sht2.Range(rng.Address) ' copy current group and paste it to 'sht2' (i.e. sheet "X") corresponding address
        Next
        .AutoFilter
    End With

    With sht2.UsedRange ' reference 'sht2' used range
        .Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete ' delete referenced sheet blank rows
        .Rows(1).SpecialCells(xlCellTypeBlanks).EntireColumn.Delete ' delete referenced sheet blank columns
    End With
End Sub

已编辑以说明可能存在的“主”工作表隐藏列