Excel 高亮显示完整的重复行(不是单个值)

Excel 高亮显示完整的重复行(不是单个值),excel,vba,Excel,Vba,我已经研究了其他几个堆栈溢出问题,但是我还没有找到我想要的答案 我有一张excel表格,有25000行,格式如下: userid | taskid | taskcode 1 | 3 | K 1 | 4 | O 1 | 4 | L 1 | 5 | O 2 | 3 | O 考虑到userid和taskid,我想做的是识别任

我已经研究了其他几个堆栈溢出问题,但是我还没有找到我想要的答案

我有一张excel表格,有25000行,格式如下:

userid  |  taskid  |  taskcode
 1      |     3    |     K
 1      |     4    |     O
 1      |     4    |     L
 1      |     5    |     O
 2      |     3    |     O
考虑到
userid
taskid
,我想做的是识别任何重复的行,在上面的示例中,我希望第二行和第三行高亮显示

我不确定这是否可行,理想情况下,我希望识别包含
taskcode
O
的重复行,而不是
L


我的最终目标是用taskcode O删除所有重复的userid/taskid行,不管它是如何实现的(高亮显示,然后通过高亮显示或使用vba进行排序)。

搞乱后确定解决了它-除非找到更有效的方法,否则我将把这个答案留在这里供将来参考

步骤1

使用D列中的
=A2&B2
创建一个包含
userid
taskid
值的组合单元格

步骤2

使用内置条件格式突出显示重复项

步骤3

使用顶部突出显示的重复红色突出显示单元格进行自定义排序,然后按所选自定义顺序(O、K、L)对任务代码进行排序

步骤4


只需突出显示要删除的所有行(现在是块中的行)。

如果您想尝试使用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

+1我也会使用串联方法,但漂亮而简单的代码对我来说并不适用。它冻结了一分钟,最后给出了“需要对象”警告框,没有突出显示任何重复。