过滤后删除重复项

过滤后删除重复项

在此处输入图片描述

在 C 列中使用此公式后=IF(ISERROR(MATCH(A2,B:B,0)),A2,"") ,可以很好地过滤掉黑名单号码。

但我需要更进一步的建议:如何删除重复项?

答案1

尝试使用 Microsoft 所述的高级过滤器: http://support.microsoft.com/kb/262277

要创建唯一记录的编译列表,请按照以下步骤操作:

  1. 选择要排序的行或记录上方的列标题。

  2. 在“数据”菜单上,指向“筛选”,然后单击“高级筛选”。如果出现以下提示,请单击“确定”。未检测到标题。假设所选内容的顶行是标题行?

  3. 在操作下,单击复制到另一个位置。

  4. 单击以选中“仅限唯一记录”复选框。

  5. 在列表范围框中,键入或选择记录范围(例如 A3:H10)。

  6. 在“条件区域”框中,键入或选择相同范围的记录(即 A3:H10)

  7. 在复制到框中,输入地址或选择要放置信息的第一个单元格。确保有足够的空间,以免覆盖现有数据。

    请记住,您只能在活动工作表中执行此操作。

  8. 单击“确定”。

笔记

如果原始数据的第一条记录重复,则在新列表中会出现两次。只需隐藏第一行即可。

如果您现场执行“高级筛选”命令,工作表仍包含所有记录。重复记录将被隐藏。要解决此问题,请指向“格式”菜单上的“行”,然后单击“取消隐藏”。

答案2

原始代码(从列中删除重复项:https://superuser.com/a/49618/50173

'Remove duplicates from SORTED list
Sub getDistinct()
    Do While ActiveCell.Value <> ""
        If ActiveCell.Value = ActiveCell.Offset(1, 0).Value Then
            ActiveCell.Select
            Selection.Delete Shift:=xlUp
        Else
            ActiveCell.Offset(1, 0).Activate
        End If
    Loop
End Sub

修改

在该行中,If ActiveCell.Value = ActiveCell.Offset(1, 0).Value宏检查当前单元格下方的下一个单元格是否具有相同的值。如果是,则删除当前单元格并转到下一个单元格。

您可以向 IF 语句添加第二个条件,这样它也会删除黑名单中的单元格。以下是伪代码。

if ActiveCell = NextCell OR ActiveCell = FoundinBlacklist then delete Activecell

最终代码

Sub getDistinct()
    Do While ActiveCell.Value <> ""
        On Error Resume Next
        Set foundit = Range("B2:B7").Find(ActiveCell, lookat:=xlWhole)
        On Error GoTo 0
        If ActiveCell = ActiveCell.Offset(1, 0) Or Not foundit Is Nothing Then
            ActiveCell.Select
            Selection.Delete Shift:=xlUp
        Else
            ActiveCell.Offset(1, 0).Activate
        End If   
    Loop
End Sub

笔记

  1. 要使用 VBA 宏,请转到Developer » Visual basic» 将代码粘贴到某处
  2. 请记住,此代码仅适用于排序列表。因此请先对数据列进行排序。
  3. 您必须将光标放在列表的开头,然后通过Alt+运行宏F8
  4. 你必须Range("B2:B7")根据你自己的黑名单范围进行相应的更改
  5. Not您可以通过删除以下选项轻松地从黑名单切换到白名单概念:Not foundit Is Nothing

答案3

您可以将公式更改为:

=IF(ISNA(MATCH(A2,B:B,0)) * ISNA(MATCH(A2,C$1:C1,0)),A2,"")

它不会显示重复的记录。然后您可以使用自动筛选、排除并将(Blanks)值复制并粘贴到新工作表中。

答案4

执行以下操作:

  1. 写下此公式B2并填写。

    =Countif(A$2:A2,A2)

  2. Counif1's函数将生成&列表2's,现在您需要删除计数大于 的行1

  3. 单击Filter中的按钮Data Tab以应用Autofilter

  4. 从中column B选择不等于的行1

  5. 然后,您可以通过突出显示这些行并选择 来删除它们Delete Rows

  6. 最后删除Filter& 您将剩下唯一的手机号码。

相关内容