在Excel中查找和删除重复值

  • 格式:doc
  • 大小:390.00 KB
  • 文档页数:6

下载文档原格式

  / 6
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在Excel中经常要查找和删除重复值,可以利用公式、条件格式等来查找重复值,用高级筛选、数据透视表、Excel 2007功能区中的命令和VBA代码来删除重复值。假设数据区域为A2:A21,对这些方法分别介绍如下。

㈠查找重复值

方法一:辅助列+公式法

在A列的右侧插入辅助列,在辅助列中输入公式来确定区域中的重复值。

1.在B2单元格中输入公式

=IF(SUMPRODUCT(--(A2=$A$2:$A$21))>1,"重复","")

或:

=IF(COUNTIF($A$2:$A$21,A2)>1,"重复","")

然后双击B2单元格右下角的填充柄,公式将自动填充到B3:B21区域。这时可以看到A列中的重复值对应在B列中都显示为“重复”。

方法二:条件格式法

Excel 2003:

1.选择A2:A21区域,单击菜单“格式→条件格式”。

2.弹出“条件格式”对话框,在对话框左侧的下拉列表中选择“公式”,在右侧的文本

框中输入公式:

=SUMPRODUCT(--(A2=$A$2:$A$21))>1

或:

=COUNTIF($A$2:$A$21,A2)>1

单击“格式”按钮,在弹出的“单元格格式”对话框中选择“图案”选项卡,选择某种颜色,单击“确定”。

3.单击“确定”,Excel将包含重复值的单元格用所选颜色标记出来。

Excel 2007:

选择区域A2:A21,然后单击功能区“开始→条件格式→突出显示单元格规则→重复值”,在“重复值”对话框中单击“确定”。

可以看到所有重复的姓名都用浅红色标记出来。

[1] [2] 下一页

㈡删除重复值

方法一:利用高级筛选

1.单击菜单“数据→筛选→高级筛选”。

2.在“高级筛选”对话框中,选择“将筛选结果复制到其他位置”,并且勾选“选择不重复的记录”,单击“列表区域”文本框右侧的按钮,选择区域A2:A21,表示需要筛选的数据区为A2:A21,同样,将“复制到”区域设置为$C$2,如图。

3.单击“确定”。Excel将把筛选后的结果放置到C2:C18中,去掉了其中的3个重复值。

方法二:利用数据透视表

1.选择A1:A21区域中的任意单元格,单击菜单“数据→数据透视表和数据透视图”,然后直接单击“下一步”按钮,在3步骤之2中可以看到“选定区域”已自动设置为“Sheet1!$A$1:$A$21”,再次单击“下一步按钮”,在3步骤之3中,选择“现有工作表”,区域选择C2单元格,然后单击“完成”按钮。

2.在“数据透视表字段列表”中,选择“神雕人物名单”,用鼠标左键将其拖至行字段区域,或直接单击“添加到”按钮。

3.可以看到Excel已自动将重复值去掉,并拼音顺序将名单排好了。

方法三:用Excel 2007中的“删除重复项”功能

选择A2:A21区域,单击功能区“数据→删除重复项”,在“删除重复项”对话框中单击“确定”。

Excel 2007自动将重复值删除,并给出提示。

方法四:用VBA

这两段VBA代码分别运用了Scripting.Dictionary和Collection对象,并利用了其元素具有唯一性的特点。

1.用Scripting.Dictionary对象:

Sub Uniquedata()

Dim Cel As Range, Res

'创建对象

Set d = CreateObject("Scripting.Dictionary")

'遍历数据区域的单元格

For Each Cel In Range("A2:A21")

'判断单元格内容是否为空

If Cel <> "" Then

'如果字典对象中不包含同样的对象就添加该对象

If Not d.exists(Cel.Value) Then d.Add Cel.Value, Cel.Value

End If

Next

Res = d.Items

'将对象中的元素写入工作表

For i = 0 To d.Count - 1

Cells(i + 2, 3) = Res(i)

Next i

End Sub

2.用Collection对象:

Sub Uniquedata1()

Dim myList As New Collection, Cel As Range, itm, i As Integer

On Error Resume Next

'遍历数据区域的单元格

For Each Cel In Range("A2:A21")

'判断单元格内容是否为空

If Cel <> "" Then myList.Add Cel.Value, CStr(Cel.Value)

Next

On Error GoTo 0

i = 1

'将非重复值写入工作表

For Each itm In myList

Cells(i + 1, 3) = itm

i = i + 1

Next

End Sub

转载请注明文章出处/portal-view-aid-6797.html