Excel 如果电子表格包含0,则将记录移动到电子表格的底部

Excel 如果电子表格包含0,则将记录移动到电子表格的底部,excel,vba,Excel,Vba,如果k列包含0,我想将整行移到电子表格的底部。我的代码只适用于更改,不适用于激活,或者更好的是使用按钮。我将如何修改代码以在更改之外工作 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub Dim rw As Long Application.EnableEvents = False If Not Intersect(Target, Range("K:

如果k列包含0,我想将整行移到电子表格的底部。我的代码只适用于更改,不适用于激活,或者更好的是使用按钮。我将如何修改代码以在更改之外工作

 Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Cells.Count > 1 Then Exit Sub
 Dim rw As Long
 Application.EnableEvents = False
If Not Intersect(Target, Range("K:K")) Is Nothing And LCase(Target) = 0 Then
rw = Target.Row
    Target.EntireRow.Cut Cells(Rows.Count, 1).End(xlUp)(2)
Rows(rw).Delete
End If
Application.EnableEvents = True
End Sub
尝试:


我知道你有一个答案,但由于你想对
进行排序
,所以这个代码很有效

Sub SortMoveRowstolRow()
Dim fRow As Long, lRow As Long

    With Range("A1").CurrentRegion
        .Sort Key1:=Range("K1"), Order1:=xlAscending, Header:=xlNo

        fRow = .Range("K:K").Find(what:=0, after:=.Range("K1"), Lookat:=xlWhole, searchdirection:=xlPrevious).Row
    End With

    Rows(1 & ":" & fRow).EntireRow.Cut Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
    Rows(1 & ":" & fRow).EntireRow.Delete

End Sub

K列是数字列吗?你能把你的行从大到小排序吗?是的,但如果我需要的话,可以从小到大排序,最后是零。如果VBA之外还有其他方法,我也希望得到答案。没有改变,它似乎没有任何作用。请确保修改代码以满足您的需要。如果需要,请在with语句中更改图纸名称。代码经过全面测试,可以正常工作。是的,我这样做了,我注意到行之间有一个空格(i)。剪切。行(Lastrow+1)我修复了空格,但没有在该行上获得所需的对象。您会得到一个错误,因为这不是空格。这是复制/剪切粘贴方法。
Sub SortMoveRowstolRow()
Dim fRow As Long, lRow As Long

    With Range("A1").CurrentRegion
        .Sort Key1:=Range("K1"), Order1:=xlAscending, Header:=xlNo

        fRow = .Range("K:K").Find(what:=0, after:=.Range("K1"), Lookat:=xlWhole, searchdirection:=xlPrevious).Row
    End With

    Rows(1 & ":" & fRow).EntireRow.Cut Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
    Rows(1 & ":" & fRow).EntireRow.Delete

End Sub