Vba 删除具有条件和条件的整个重复行

Vba 删除具有条件和条件的整个重复行,vba,excel,Vba,Excel,我有重复的数据(列“c”),我想删除列“D”中有数字的行。但仅适用于日期奇数的副本,如图所示 这是我正在使用的代码,但我不知道如何删除数据在“D”中的行,并且是重复的 Sub del_doops() Dim RowNdx As Long Dim RowNdx2 As Long For RowNdx = Range("A1:f1").End(xlDown).Row To 2 Step -1 For RowNdx2 = RowNdx - 1 To 1 S

我有重复的数据(列“c”),我想删除列“D”中有数字的行。但仅适用于日期奇数的副本,如图所示

这是我正在使用的代码,但我不知道如何删除数据在“D”中的行,并且是重复的

 Sub del_doops()
    Dim RowNdx As Long
    Dim RowNdx2 As Long

    For RowNdx = Range("A1:f1").End(xlDown).Row To 2 Step -1
        For RowNdx2 = RowNdx - 1 To 1 Step -1   'Begin at one above RowNdx

            If Cells(RowNdx, "b").Value = Cells(RowNdx2, "b").Value And _
                Cells(RowNdx, "C").Value = Cells(RowNdx2, "C").Value And _
                Cells(RowNdx, "E").Value = Cells(RowNdx2, "E").Value And _
                Cells(RowNdx, "F").Value <> Cells(RowNdx2, "F").Value Then
                Rows(RowNdx2).Delete 'this is where i need help
            End If

        Next RowNdx2
    Next RowNdx

End Sub
Sub del_doops()
暗淡的RowNdx与长
暗淡的RowNdx2与长
对于RowNdx=范围(“A1:f1”)。结束(xlDown)。行到2步骤-1
对于RowNdx2=RowNdx-1到1,步骤-1'从RowNdx上方的一个开始
如果单元格(RowNdx,“b”)。值=单元格(RowNdx2,“b”)。值和_
单元格(RowNdx,“C”)。值=单元格(RowNdx2,“C”)。值和_
单元格(RowNdx,“E”)。值=单元格(RowNdx2,“E”)。值和_
单元格(RowNdx,“F”)。值单元格(RowNdx2,“F”)。然后值
行(RowNdx2)。删除“这是我需要帮助的地方”
如果结束
下一行x2
下一个RowNdx
端接头

Sheet1
更改为
Set wS=thish工作簿中的工作表名称。工作表(“Sheet1”)

Sub del_doops()
暗淡的RowNdx与长
暗淡的RowNdx2与长
将wS设置为工作表
设置wS=ThisWorkbook.Sheets(“Sheet1”)
与wS
对于RowNdx=.Range(“A”&.Rows.Count).End(xlUp).Row到2步骤-1
对于RowNdx2=RowNdx-1到1,步骤-1'从RowNdx上方的一个开始
If.Cells(RowNdx,“B”).Value=.Cells(RowNdx2,“B”).Value和_
.Cells(RowNdx,“C”)。值=.Cells(RowNdx2,“C”)。值和_
.Cells(RowNdx,“E”)。Value=.Cells(RowNdx2,“E”)。Value和_
.单元格(RowNdx,“F”).值。单元格(RowNdx2,“F”).值
如果.Cells(RowNdx,“D”).值为vbNullString,则
.Rows(RowNdx).删除
其他的
如果.Cells(RowNdx2,“D”).Value=vbNullString,则.Rows(RowNdx2).Delete
如果结束
如果结束
下一行x2
下一个RowNdx
以“wS”结尾
端接头
子del_doops()
暗淡的RowNdx与长
暗淡的RowNdx2与长
对于RowNdx=范围(“A1:f1”)。结束(xlDown)。行到2步骤-1
对于RowNdx2=RowNdx-1到1,步骤-1'从RowNdx上方的一个开始
如果单元格(RowNdx,“B”)。值=单元格(RowNdx2,“B”)。值和_
单元格(RowNdx,“C”)。值=单元格(RowNdx2,“C”)。值和_
单元格(RowNdx,“E”)。值=单元格(RowNdx2,“E”)。值和_
单元格(RowNdx,“F”)。值=单元格(RowNdx2,“F”)。然后值
如果单元格(RowNdx,“D”)。值=vbNullString和_
单元格(RowNdx2,“D”)。然后值为vbNullString
行(RowNdx2)。删除
其他的
行(RowNdx)。删除
如果结束
如果结束
下一行x2
下一个RowNdx
端接头

为什么第17行(包含
2月20日
在您的第二组中被删除?日期变了,但没关系。R3uK先生帮了我。但无论如何,谢谢您令人惊讶,纯洁genius@aj_bk:很高兴我能帮忙!;)请注意
.Cells(
.Range)中的
这要归功于使用wS的
,这是正确引用工作表的最简单方法!)
Sub del_doops()
Dim RowNdx As Long
Dim RowNdx2 As Long
Dim wS As Worksheet

Set wS = ThisWorkbook.Sheets("Sheet1")
With wS
    For RowNdx = .Range("A" & .Rows.Count).End(xlUp).Row To 2 Step -1
        For RowNdx2 = RowNdx - 1 To 1 Step -1   'Begin at one above RowNdx
            If .Cells(RowNdx, "B").Value = .Cells(RowNdx2, "B").Value And _
                    .Cells(RowNdx, "C").Value = .Cells(RowNdx2, "C").Value And _
                    .Cells(RowNdx, "E").Value = .Cells(RowNdx2, "E").Value And _
                    .Cells(RowNdx, "F").Value <> .Cells(RowNdx2, "F").Value Then
                If .Cells(RowNdx, "D").Value <> vbNullString Then
                    .Rows(RowNdx).Delete
                Else
                    If .Cells(RowNdx2, "D").Value = vbNullString Then .Rows(RowNdx2).Delete
                End If
            End If
        Next RowNdx2
    Next RowNdx
End With 'wS
End Sub
Sub del_doops()
Dim RowNdx As Long
Dim RowNdx2 As Long
For RowNdx = Range("A1:f1").End(xlDown).Row To 2 Step -1
    For RowNdx2 = RowNdx - 1 To 1 Step -1   'Begin at one above RowNdx
        If Cells(RowNdx, "B").Value = Cells(RowNdx2, "B").Value And _
        Cells(RowNdx, "C").Value = Cells(RowNdx2, "C").Value And _
        Cells(RowNdx, "E").Value = Cells(RowNdx2, "E").Value And _
        Cells(RowNdx, "F").Value = Cells(RowNdx2, "F").Value Then
            If Cells(RowNdx, "D").Value = vbNullString And _
            Cells(RowNdx2, "D").Value <> vbNullString Then
                Rows(RowNdx2).Delete
            Else
                Rows(RowNdx).Delete
            End If
        End If
    Next RowNdx2
Next RowNdx
End Sub