我已经查看了其他几个堆栈溢出问题,但是我找不到我要找的答案。
我有一个包含25000行的Excel工作表,格式如下:
userid | taskid | taskcode
1 | 3 | K
1 | 4 | O
1 | 4 | L
1 | 5 | O
2 | 3 | O
我想要做的是确定考虑userid
和taskid
的所有重复行,在上面的示例中,我希望第二行和第三行能够突出显示。
我不确定它有多可行,我最好确定包含taskcode
O
而不是L
的重复行。
我的最终目标是使用任务代码O删除所有重复的userid / taskid行,而不管它是如何实现的(突出显示然后按高亮显示排序或使用vba)。
答案 0 :(得分:2)
好好解决它后 - 我会把这个答案留在这里供将来参考,除非有更有效的方法确定。
第1步
使用D列中的userid
创建包含taskid
和=A2&B2
值的组合单元格。
第2步
使用内置条件格式设置突出显示重复项。
第3步
使用顶部突出显示的重复红色突出显示的单元格进行自定义排序,然后按所选自定义顺序(O,K,L)排序taskcode
第4步
只需突出显示您要删除的所有行(现在都在块中)。
答案 1 :(得分:0)
如果您想尝试使用VBA。
Sub duplicates_separation()
Dim duplicate(), i As Long
Dim delrange As Range, cell As Long
Dim delrange2 As Range
Dim shtIn As Worksheet
Dim numofrows1
Set shtIn = ThisWorkbook.Sheets("sheet1")
x = 2
y = 1
Set delrange = shtIn.Range("c1:b30000") 'set your range here
Set delrange2 = shtIn.Range("b1:f30000")
ReDim duplicate(0)
'search duplicates in 2nd column
For cell = 1 To delrange.Cells.Count
If Application.CountIf(delrange, delrange(cell)) > 1 Then
ReDim Preserve duplicate(i)
duplicate(i) = delrange(cell).Address
i = i + 1
End If
Next
'search duplicates in 3rd column
For cell = 1 To delrange2.Cells.Count
If Application.CountIf(delrange2, delrange2(cell)) > 1 Then
ReDim Preserve duplicate(i)
duplicate(i) = delrange2(cell).Address
i = i + 1
End If
Next
'print duplicates
For i = UBound(duplicate) To LBound(duplicate) Step -1
shtIn.Range(duplicate(i)).EntireRow.Value.delete
x = x + 1
Next i
End Sub