如何删除 Excel 列中的重复值(#不删除重复值#)?

如何删除 Excel 列中的重复值(#不删除重复值#)?

我有以下两列数据:

Location    Value
    A         1
    A         1
    B         2
    C         2
    D         3
    D         3
    E         4
    E         4
    F         5
    G         5

如果有重复的Location和组合Value,则必须将其删除。如果我使用删除重复选项,则会删除重复项,但会保留其中一个重复值,这对我来说不利。我预期的输出是:

Location    Value
    B         2
    C         2
    F         5
    G         5

以下是我迄今为止想到的和尝试过的:

我将两列连接起来,然后用来COUNTIF计算某个值重复的次数。然后,我可以通过仅考虑等于 1 的计数来过滤计数列。如下所示:

我的方法

但是,由于我的电子表格中已经进行了各种其他过滤和排序,因此我的这种方法不可行。

还有其他建议可以达到与我相同的结果吗?

答案1

使用 VBA:

Public Function allDuplicates()
    Dim a As Application
    Set a = Application
    Dim arrayRows() As Boolean
    maxCol = 2
    firstRow = 2
    Dim wks As Worksheet
    Set wks = ActiveSheet
    wks.Application.ScreenUpdating = False
    totalRows = wks.Cells(Rows.Count, "A").End(xlUp).Row
    ReDim arrayRows(totalRows)
    For i = firstRow To totalRows
        theRow = Join(a.Transpose(a.Transpose(wks.Range(Cells(i, 1), Cells(i, maxCol)))), Chr(0))
        For j = i + 1 To totalRows
            theOtherRow = Join(a.Transpose(a.Transpose(wks.Range(Cells(j, 1), Cells(j, maxCol)))), Chr(0))
            If theRow = theOtherRow Then
                arrayRows(i) = True
                arrayRows(j) = True
            End If
        Next j
    Next i
    For i = firstRow To totalRows
        If arrayRows(i) = True Then
            wks.Rows(i).Clear
        End If
    Next i
    Range("A1:B" & totalRows).Sort key1:=Range("A2:A" & totalRows), order1:=xlAscending, Header:=xlYes
    wks.Application.ScreenUpdating = True
    Message = MsgBox("Finished", vbInformation)
End Function

打开 Visual Basic /Macros,在下方添加一个模块本工作簿,将代码粘贴到右侧,并执行。

相关内容