在 C 列中使用此公式后=IF(ISERROR(MATCH(A2,B:B,0)),A2,"")
,可以很好地过滤掉黑名单号码。
但我需要更进一步的建议:如何删除重复项?
答案1
尝试使用 Microsoft 所述的高级过滤器: http://support.microsoft.com/kb/262277
要创建唯一记录的编译列表,请按照以下步骤操作:
选择要排序的行或记录上方的列标题。
在“数据”菜单上,指向“筛选”,然后单击“高级筛选”。如果出现以下提示,请单击“确定”。未检测到标题。假设所选内容的顶行是标题行?
在操作下,单击复制到另一个位置。
单击以选中“仅限唯一记录”复选框。
在列表范围框中,键入或选择记录范围(例如 A3:H10)。
在“条件区域”框中,键入或选择相同范围的记录(即 A3:H10)
在复制到框中,输入地址或选择要放置信息的第一个单元格。确保有足够的空间,以免覆盖现有数据。
请记住,您只能在活动工作表中执行此操作。
单击“确定”。
笔记
如果原始数据的第一条记录重复,则在新列表中会出现两次。只需隐藏第一行即可。
如果您现场执行“高级筛选”命令,工作表仍包含所有记录。重复记录将被隐藏。要解决此问题,请指向“格式”菜单上的“行”,然后单击“取消隐藏”。
答案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
笔记
- 要使用 VBA 宏,请转到
Developer » Visual basic
» 将代码粘贴到某处 - 请记住,此代码仅适用于排序列表。因此请先对数据列进行排序。
- 您必须将光标放在列表的开头,然后通过Alt+运行宏F8
- 你必须
Range("B2:B7")
根据你自己的黑名单范围进行相应的更改 Not
您可以通过删除以下选项轻松地从黑名单切换到白名单概念:Not foundit Is Nothing
答案3
您可以将公式更改为:
=IF(ISNA(MATCH(A2,B:B,0)) * ISNA(MATCH(A2,C$1:C1,0)),A2,"")
它不会显示重复的记录。然后您可以使用自动筛选、排除并将(Blanks)
值复制并粘贴到新工作表中。
答案4
执行以下操作:
写下此公式
B2
并填写。=Countif(A$2:A2,A2)
Counif
1's
函数将生成&列表2's
,现在您需要删除计数大于 的行1
。单击
Filter
中的按钮Data Tab
以应用Autofilter
。从中
column B
选择不等于的行1
。然后,您可以通过突出显示这些行并选择 来删除它们
Delete Rows
。最后删除
Filter
& 您将剩下唯一的手机号码。