Excel两列跨列去重:如何仅保留A列的唯一值4?
在Excel两列中跨列删除重复值并仅保留A列的数字4
Excel自带的「删除重复值」功能默认是按行或指定列判断行内重复,没法全局对比两列所有值,所以得用以下几种方法实现跨列去重:
方法1:辅助列+筛选删除
- 新增辅助列(比如C列),在C1单元格输入公式:
下拉填充到所有数据行。这个公式会统计A列单元格的值在A、B两列中出现的总次数,仅出现1次的返回=COUNTIF($A:$B,A1)=1TRUE,重复出现的返回FALSE。 - 选中C列,点击「数据」→「筛选」,只勾选
TRUE选项,删除未被筛选出来的行。 - 最后删掉辅助列,剩下的就是两列中唯一出现的值,其中就包含你要保留的A列数字4(前提是4仅在A列出现,未在B列重复)。
方法2:高级筛选法
- 选中A、B两列的全部数据区域,点击「数据」选项卡→「高级」筛选。
- 在弹窗中选择「将筛选结果复制到其他位置」,设置「列表区域」为
$A:$B,「条件区域」留空,勾选「选择不重复的记录」,再指定结果复制的目标位置(比如$D$1)。 - 筛选完成后,找到A列数字4对应的行,保留该行,删除其他行即可。
方法3:VBA批量处理(适合大量数据)
按Alt+F11打开VBA编辑器,右键点击当前工作簿→「插入」→「模块」,粘贴以下代码:
Sub RemoveCrossColumnDuplicates() Dim rng As Range, cell As Range Dim uniqueVals As New Collection Dim delRows As New Collection Dim i As Integer ' 定义数据范围(A到B列,直到A列最后一行有数据) Set rng = Range("A1:B" & Cells(Rows.Count, "A").End(xlUp).Row) ' 收集两列中所有唯一值 On Error Resume Next For Each cell In rng If Not IsEmpty(cell) Then uniqueVals.Add cell.Value, Key:=CStr(cell.Value) End If Next cell On Error GoTo 0 ' 标记A列中值重复的行 For Each cell In Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row) On Error Resume Next uniqueVals.Item(CStr(cell.Value)) If Err.Number <> 0 Then delRows.Add cell.Row End If On Error GoTo 0 Next cell ' 从下往上删除标记的行(避免行号错乱) For i = delRows.Count To 1 Step -1 Rows(delRows(i)).Delete Next i End Sub
- 点击运行按钮(绿色三角),代码会自动删除A列中值在B列重复出现的行,仅保留A列中唯一存在的值。
内容的提问来源于stack exchange,提问作者Tatchy
相关产品推荐
相关产品推荐

