有条件地将行移动到另一个工作表中

时间:2015-10-01 17:46:39

标签: excel vba excel-vba copy-paste

我希望有人可以帮助我。我有一张电子表格,其中有两张名为“详细信息”,另一张名为“已对帐”。我在详细信息中有1000多行,我想在列E中切割所有有0或a的行(我想剪切整行)并将其粘贴到工作表详细信息中。如果可能的话,我想将Reconciled中的标题复制并粘贴到详细信息中。

我尝试过使用另一篇文章

中使用的代码(略有修改)
Sub Test()
    For Each Cell In Sheets("Details").Range("E:E")
        If Cell.Value = "0" Then
            matchRow = Cell.Row
            Rows(matchRow & ":" & matchRow).Select
            Selection.Copy

            Sheets("Reconcile").Select
            ActiveSheet.Rows(matchRow).Select
            ActiveSheet.Paste
            Sheets("Details").Select
        End If
    Next
End Sub

但有两个问题。因为有些值 - (数字是真的)会被移动,但是0.00这些值不会被移动,因为它们是四舍五入的(我认为这就是为什么它们不被移动)。此外,屏幕更新奇怪,我很抱歉,我无法解释它。

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

    Sub Test()
       Application.ScreenUpdating = False
       On Error Goto Finish
       For Each Cell In Sheets("Details").Range("E:E")
          If Cell.Value = 0 Or Cell.Value = "-" Then cell.EntireRow.copy Sheets("Reconcile").Rows(cell.Row)
       Next
Finish:
       Application.ScreenUpdating = True
    End Sub

注意:不要在0周围加上引号,这将进行数字比较

答案 1 :(得分:0)

使用自动过滤器:

Public Sub Test()
    Application.ScreenUpdating = False
    With Worksheets("Details").UsedRange
        .Parent.AutoFilterMode = False
        .AutoFilter
        .AutoFilter Field:=5, Criteria1:="0"

        .Copy
        With Worksheets("Reconciled").Cells(1, 1)
            .PasteSpecial xlPasteColumnWidths
            .PasteSpecial xlPasteAll
            .Parent.Activate:   .Select
        End With

        .Rows(1).Hidden = True
        .SpecialCells(xlCellTypeVisible).EntireRow.Delete
        .Rows(1).Hidden = False
        .AutoFilter
        .Parent.Activate
        .Cells(1, 1).Activate
    End With
    Application.ScreenUpdating = True
End Sub
相关问题