如何根据单元格值将行移动到另一列,然后删除该行

时间:2017-08-04 11:11:50

标签: excel vba

在我的Excel工作表中,如果单词"已关闭,我希望它将Sheet1(" Action Register")中的整行移动到sheet2("已完成") #34;在列J的行中,然后删除第一个工作表上的行。 这是我到目前为止的代码,但它并没有复制所有"关闭"来自"行动登记册"的行到了'#34;已完成"表单,它只复制其中一行,然后删除所有行。有人可以帮助指出我出错的地方吗? 感谢

Sub Copyx()

    Sheets("Action Register").Select

    RowCount = Cells(Cells.Rows.Count, "I").End(xlUp).Row

    For i = 1 To RowCount

        Range("J" & i).Select

        check_value = ActiveCell

        If check_value = "closed" Or check_value = "closed" Then

            ActiveCell.EntireRow.Copy

            Sheets("Completed").Select

            RowCount = Cells(Cells.Rows.Count, "A").End(xlUp).Row

            Range("A" & RowCount + 1).Select

            ActiveSheet.Paste

            Sheets("Action Register").Select

        End If
    Next


'-

    Dim c As Range

    Dim SrchRng

    Set SrchRng = ActiveSheet.Range("J1", ActiveSheet.Range("J50000").End(xlUp))

    Do

        Set c = SrchRng.Find("closed", LookIn:=xlValues)

        If Not c Is Nothing Then c.EntireRow.Delete

    Loop While Not c Is Nothing

End Sub

1 个答案:

答案 0 :(得分:0)

尝试此剪切并插入以实现此目的。

Sub Copyx()

Sheets("Action Register").Select

RowCount = Cells(Cells.Rows.Count, "I").End(xlUp).Row

For i = 1 To RowCount

Range("J" & i).Select

check_value = ActiveCell

If check_value = "closed" Or check_value = "closed" Then

ActiveCell.EntireRow.Cut

Sheets("Completed").Select

RowCount = Cells(Cells.Rows.Count, "A").End(xlUp).Row

Range("A" & RowCount + 1).Select
Selection.Insert Shift:=xlDown

Sheets("Action Register").Select

End If
Next
'-

Dim c As Range

Dim SrchRng

Set SrchRng = ActiveSheet.Range("J1", ActiveSheet.Range("J50000").End(xlUp))

Do

Set c = SrchRng.Find("closed", LookIn:=xlValues)

If Not c Is Nothing Then c.EntireRow.Delete

Loop While Not c Is Nothing

End Sub