检查2列中的值是否匹配&如果另一行通过某个条件,则Excel删除行

时间:2017-05-03 23:51:25

标签: excel vba excel-vba excel-formula

感谢是否有人可以帮助我。我一直在寻找任何相关问题,但无济于事。

我不确定这是否可以通过VBA完成(如果是,更好),虽然我目前正在研究公式(Match,VLookup)并且仍然很难。

我有三组列。(列A,B,C)

DATE            INVOICE       PAYMENT*
1/10/2015       131.08
1/10/2015        1220   
2/10/2015                     1232.4*
3/10/2015                      1220*

目标是删除包含在B列(发票)和C列(付款)上找到的相同值的行,但前提是A列(日期)中的数据是在找到匹配日期后的3天内在两列中。应删除这些条件中的两行。 2015年10月1日+ 3天= 04/10/2015可以考虑,否则不应删除行。

期望的结果将是。

DATE            INVOICE       PAYMENT*
1/10/2015        131.08
2/10/2015                      1232.4*

提前谢谢你。

1 个答案:

答案 0 :(得分:1)

假设您只有2行必须删除,则创建宏。试一试,

Sub delrow()
Dim i As Long, j As Long
Columns("A:C").Sort key1:=Range("A2"), _
      order1:=xlAscending, Header:=xlYes
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
For j = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    If Cells(i, 2) = Cells(j, 3) And Cells(i, 1) < Cells(j, 1) And Cells(i, 1) + 3 >= Cells(j, 1) Then
        Rows(i).ClearContents
        Rows(j).ClearContents
    End If
Next j
Next i
For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
    If Cells(i, 1) = "" Then
        Rows(i).Delete
    End If
Next i
End Sub