每个人一次或两次都需要从文本条目列表中删除重复的条目。假设您在工作表的A列中有文本值,它们运行约500行。如果要删除列表中的所有重复项,则可能正在寻找最简单的方法。

您可以手动使用数据过滤来确定唯一值。

确保该列顶部有一个标签,然后在该列中选择一个单元格。选择数据|筛选器|高级筛选器,或者在Excel 2007中显示功能区的“数据”选项卡,然后在“排序和筛选器”组中单击“高级”。使用结果对话框中的控件来指定您要将唯一值复制到您指定的另一个位置。

您也可以使用公式手动确定列表中的重复项。对列中的值进行排序,然后在单元格B2中输入以下公式:

=IF(A2=A1,"Duplicate","")

将公式向下复制到B列中所有在A列中具有相应值的单元格。选择B列中的所有值,然后按Ctrl + C。使用“选择性粘贴”对话框可将值仅粘贴到相同的所选单元格中。现在,您已将公式转换为结果。根据B列的内容对两列进行排序,所有重复的行都将在一个区域中。删除这些行,您便获得了唯一值的完整列表。

这两种手动方法都是快速简便的方法,但是如果您通常必须从列中删除重复的值,则宏可能更适合您。以下宏依赖于高级数据过滤,非常类似于早期的手动方法:

Sub CreateUniqueList()

Dim rData As Range     Dim rTemp As Range

Set rData = Range(Range("a1"), Range("A65536").End(xlUp))

rData.EntireColumn.Insert     Set rTemp = rData.Offset(0, -1)

rData.AdvancedFilter _         Action:=xlFilterCopy, _         CopyToRange:=rTemp, _         Unique:=True

rTemp.EntireColumn.Copy _         rData.EntireColumn     Application.CutCopyMode = False     rTemp.EntireColumn.Delete     Set rData = Nothing     Set rTemp = Nothing End Sub

宏将创建一个临时列,使用高级过滤将唯一值复制到该列,然后删除原始数据列。

结果只是A列中的唯一值。如果您不希望宏使用Excel的数据筛选功能,则以下宏将达到目的:

Sub DelDups()

Dim rngSrc As Range     Dim NumRows As Integer     Dim ThisRow As Integer     Dim ThatRow As Integer     Dim ThisCol As Integer     Dim J As Integer, K As Integer

Application.ScreenUpdating = False     Set rngSrc = ActiveSheet.Range(ActiveWindow.Selection.Address)



NumRows = rngSrc.Rows.Count     ThisRow = rngSrc.Row     ThatRow = ThisRow + NumRows - 1     ThisCol = rngSrc.Column

'Start wiping out duplicates     For J = ThisRow To (ThatRow - 1)

If Cells(J, ThisCol) > "" Then             For K = (J + 1) To ThatRow                 If Cells(J, ThisCol) = Cells(K, ThisCol) Then                     Cells(K, ThisCol) = ""

End If             Next K         End If     Next J

'Remove cells that are empty     For J = ThatRow To ThisRow Step -1         If Cells(J, ThisCol) = "" Then             Cells(J, ThisCol).Delete xlShiftUp         End If     Next J     Application.ScreenUpdating = True End Sub

宏在调用之前对您所做的选择起作用。因此,如果您需要从A2:A974范围中删除重复的单元格,只需选择该范围,然后运行宏即可。宏完成后,将删除重复的单元格以及所有空白单元格。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(2430)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: