我有一张包含两列的表格。第一列有唯一值,而第二列有许多重复项。
我想从第二列中删除重复项,但之前包含重复项的单元格应保持为空这样第一列的值仍然与第二列的值匹配。
注意,重复项不一定是连续的。无论重复项的后续位置如何,都应仅保留第一次出现的内容。
现在,当我删除重复项时,整个列都会压缩,这会破坏两列之间的原始匹配。
答案1
您的评论表明重复项不一定是连续的。这里有一个公式可以处理这个问题。在 C 中创建一个新的显示列,并根据需要隐藏 B 列。假设您的数据从第 2 行开始。单元格 C2 将是:
=IF(ISERROR(MATCH(B2,C$2:C2,0)),B2,"")
将其复制到列下。这将查看 B 列中的值是否已与 C 列中的条目匹配。如果是,则返回空白。否则,它将使用 B 列值。
答案2
单击要处理的列中的任意单元格并运行这个小宏:
Sub DuplicateKiller()
Dim N As Long, IR As Long, v As Variant
Dim i As Long, rng As Range
IR = ActiveCell.Column
N = Cells(Rows.Count, IR).End(xlUp).Row
Set r = Range(Cells(1, IR), Cells(N, IR))
For i = N To 1 Step -1
With Cells(i, IR)
v = .Value
If Application.WorksheetFunction.CountIf(r, v) > 1 Then
.ClearContents
End If
End With
Next i
End Sub
宏的安装和使用非常容易:
- ALT-F11 打开 VBE 窗口
- ALT-I ALT-M 打开新模块
- 粘贴内容并关闭 VBE 窗口
如果您保存工作簿,宏将随之保存。如果您使用的是 2003 以后的 Excel 版本,则必须将文件另存为.xlsm而不是.xlsx
要删除宏:
- 调出如上所示的 VBE 窗口
- 清除代码
- 关闭 VBE 窗口
要使用 Excel 中的宏:
- ALT-F8
- 选择宏
- 触摸运行
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
必须启用宏才能使其工作!