从一个工作表过滤,剪切和粘贴到另一个工作表

时间:2019-06-21 07:24:16

标签: excel vba

我有一个包含大量数据的工作表。我想对A中的Testsheet1列使用自动过滤器,然后剪切整个行并将其粘贴到Testsheet2中的定义范围内。

Sub CutCopyPaste()

    Dim lrow as Long

    lRow = Worksheets("Testsheet1").Range("A" & Rows.Count).End(xlUp).Row

    Worksheets("Testsheet1").Range("A1:A" & lRow).AutoFilter Field:=1, Criteria1:="Test"

    Worksheets("Testsheet1").Range("A1:A" & lRow).Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Cut Worksheets("Testsheet2").Range("A1")

End Sub

对于copy来说,它完全可以正常工作,但是使用cut时出现错误。 运行时错误“ 438”。对象不支持此功能或方法。

2 个答案:

答案 0 :(得分:0)

这将为您完成工作:

Sub CutCopyPaste()

    Dim lrow As Long
    Dim ws

    Set ws = ThisWorkbook.Sheets("Sheet5")

    With ThisWorkbook.Sheets("Sheet6")
        lrow = .Range("A" & .Rows.Count).End(xlUp).Row
        .Range("A1:A" & lrow).AutoFilter Field:=1, Criteria1:="Test"
    End With


    ThisWorkbook.Sheets("Sheet6").Range("A1:A" & lrow).Offset(1, 0).SpecialCells(xlCellTypeVisible).Copy
    ws.Cells(1, 1).PasteSpecial xlPasteValues

    ThisWorkbook.Sheets("Sheet6").Range("A1:A" & lrow).Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete


End Sub

答案 1 :(得分:-1)

尝试一下,我对其进行了测试并起作用:

componentDidMount() {
    // Timer declaration
    this.myTimer = setInterval(() => {
      this.setState({ someState: 'someValue' });
    }, 1000);
  };

  componentWillUnmount() {
    clearInterval(this.myTimer);
  };