Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果某一特定列在下一行重复某个单词,VBA将删除整行_Vba_Excel - Fatal编程技术网

如果某一特定列在下一行重复某个单词,VBA将删除整行

如果某一特定列在下一行重复某个单词,VBA将删除整行,vba,excel,Vba,Excel,我正在尝试编写一个vba代码,以便在同一列(E列)但在另一行中立即重复任何单词的情况下,去掉一行。如果发生这种情况,则要删除的行是位于顶部的另一行。下面是一个例子。在这种情况下,要删除的行是:E6、E10和E15 工作表的名称是test。列和F和G不相关 非常感谢 编辑以添加注释中的代码: Sub delete_duplicates_column_E() With Sheets("test").Range("A:E") .Value = .Value .

我正在尝试编写一个vba代码,以便在同一列(E列)但在另一行中立即重复任何单词的情况下,去掉一行。如果发生这种情况,则要删除的行是位于顶部的另一行。下面是一个例子。在这种情况下,要删除的行是:E6、E10和E15

工作表的名称是test。列和F和G不相关

非常感谢

编辑以添加注释中的代码:

Sub delete_duplicates_column_E()
    With Sheets("test").Range("A:E")
        .Value = .Value
        .RemoveDuplicates Columns:=5, Header:=xlYes
    End With
End Sub

刚刚做了这个,试试看:

Sub-removeDuplicates()
范围(“E2”)。选择
直到ActiveCell.Value=“”
如果ActiveCell.Value=ActiveCell.Offset(1.Value),则
ActiveCell.EntireRow.Delete(xlShiftUp)
如果结束
ActiveCell.Offset(1)。选择
环

End Sub

刚刚启动了此功能,请尝试:

Sub-removeDuplicates()
范围(“E2”)。选择
直到ActiveCell.Value=“”
如果ActiveCell.Value=ActiveCell.Offset(1.Value),则
ActiveCell.EntireRow.Delete(xlShiftUp)
如果结束
ActiveCell.Offset(1)。选择
环

End Sub

删除行时,最好向回循环:

Sub delete_duplicates_column_E()
    Dim ws As Worksheet
    Dim lastrow As Long
    Dim i As Long

    Set ws = Sheets("test")
    With ws
        lastrow = .Range("E" & .Rows.Count).End(xlUp).Row
        For i = lastrow To 2 Step -1
            If .Cells(i, 5) = .Cells(i + 1, 5) Then
                .Rows(i).Delete
            End If
        Next i
    End With
End Sub

删除行时,最好向回循环:

Sub delete_duplicates_column_E()
    Dim ws As Worksheet
    Dim lastrow As Long
    Dim i As Long

    Set ws = Sheets("test")
    With ws
        lastrow = .Range("E" & .Rows.Count).End(xlUp).Row
        For i = lastrow To 2 Step -1
            If .Cells(i, 5) = .Cells(i + 1, 5) Then
                .Rows(i).Delete
            End If
        Next i
    End With
End Sub

你能展示一下到目前为止你写的代码吗?是的。但这并不是我想要的,因为Z删除了所有的重复项。请参见下面的:“Sub delete_duplicates_column_E()与工作表(“test”).Range(“A:E”).Value=.Value.removedupplicates Columns:=5,Header:=xlYes End With End Sub”您能显示到目前为止编写的代码吗?是的。但这并不是我想要的,因为Z删除了所有的重复项。请参见下面的内容:“Sub delete_duplicates_column_E()与工作表(“test”)。范围(“A:E”)。值=。值。removedupplicates Columns:=5,Header:=xlYes End With End Sub”似乎正在工作!谢谢添加到您的代码中,只需设置ws=Sheets(“test”)ws。选择ws.Range(“E2”)。选择不是问题,只需记住
。选择可能非常不稳定,应该在任何时候都避免。它似乎正在工作!谢谢添加到您的代码中,只需设置ws=Sheets(“test”)ws。选择ws.Range(“E2”)。选择不是问题,只需记住
。选择可能非常不稳定,应尽可能避免。