突出显示完整的重复行(非单个值)

时间:2012-04-11 22:14:41

标签: excel vba

我已经查看了其他几个堆栈溢出问题,但是我找不到我要找的答案。

我有一个包含25000行的Excel工作表,格式如下:

userid  |  taskid  |  taskcode
 1      |     3    |     K
 1      |     4    |     O
 1      |     4    |     L
 1      |     5    |     O
 2      |     3    |     O

我想要做的是确定考虑useridtaskid的所有重复行,在上面的示例中,我希望第二行和第三行能够突出显示。

我不确定它有多可行,我最好确定包含taskcode O而不是L的重复行。

我的最终目标是使用任务代码O删除所有重复的userid / taskid行,而不管它是如何实现的(突出显示然后按高亮显示排序或使用vba)。

2 个答案:

答案 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