正如您在下面所见,我想删除重复执行的测试,但必须通过比较测试ID和datedone来保留一个结果。例如,如果您参加测试“AAA”,它已经完成了三次,所以我想消除两个基于测试ID和过时的内容。它已分别用1,2,5个测试ID完成,所以我想保留最新的5个并消除1和2.但在某些情况下,测试ID也是相同的,然后我需要比较过时的。例如“CCC”测试分别测试2,2,但是测试日期分别为2011年10月24日和2015年12月31日。因为我想要保留最新的,我需要消除24.10.2015。我尝试了一个代码(下面的例子),但它没有正常工作j的值,即使删除了一行,每次删除东西时sikp两行,我也会连续更新。请帮助我,我坚持了很久 -
C:\Program Files (x86)\BlueStacks
第1,2,3栏是TEST,Datedone& Testid分别代码
Tests Datedone Test Id Result
AAA 13.10.2011 1 passed
BBB 13.10.2011 1 passed
CCC 24.10.2011 2 passed
AAA 15.10.2011 2 passed
DDD 31.12.2014 3 passed
CCC 31.12.2015 2 passed
GGG 15.10.2013 5 passed
HHH 25.10.2014 6 passed
AAA 31.12.2015 5 passed
答案 0 :(得分:0)
试试这个
Public Sub DeleteRepeats()
Const FORMULA_REPEATS As String = _
"=IF(COUNTIFS($A$2:$A$<lastrow>,A2,$C$2:$C$<lastrow>,C2)=1," & _
"MAX(IF($A$2:$A$<lastrow>=A2,$C$2:$C$<lastrow>))=C2," & _
"MAX(IF(($A$2:$A$<lastrow>=A2)*($C$2:$C$<lastrow>=C2),$B$2:$B$<lastrow>))=B2)"
Dim rng As Range
Dim lastrow As Long
With ActiveSheet
lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row
.Columns("E").Insert
.Range("E1").Value = "tmp"
.Range("E2").FormulaArray = Replace(FORMULA_REPEATS, "<lastrow>", lastrow)
.Range("E2").AutoFill .Range("E2").Resize(lastrow - 1)
Set rng = .Range("A2").Resize(lastrow - 1)
.Range("A1:E1").AutoFilter Field:=5, Criteria1:="FALSE"
On Error Resume Next
Set rng = rng.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Not rng Is Nothing Then rng.EntireRow.Delete
.Columns("E").Delete
End With
End Sub