删除重复的文本值(Microsoft Excel)
每个人一次或两次都需要从文本条目列表中删除重复的条目。假设您在工作表的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及更高版本)找到本技巧的版本: