2

我查看了其他几个堆栈溢出问题,但是我没有找到我正在寻找的答案。

我有一个 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.

我的最终目标是使用 taskcode O 删除所有重复的 userid / taskid 行,无论它是如何实现的(突出显示然后按突出显示或使用 vba 排序)。

4

2 回答 2

2

好的,在搞砸后解决了它-除非有更有效的方法,否则我将把这个答案留在这里以供将来参考。

步骤1

在 D 列中使用useridtaskid值创建一个组合单元格。=A2&B2

第2步

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

第 3 步

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

第4步

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

于 2012-04-11T22:53:52.650 回答
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
于 2014-01-16T07:55:50.300 回答