如何移除A列中所有存在于B列的值(保留A列重复项)
解决方法:移除A列中存在于B列的值(保留A列自身重复)
方法1:辅助列+筛选删除
- 在空白辅助列(比如C列)首行输入公式:
=ISERROR(MATCH(A1,$B:$B,0)),下拉填充到A列最后一行 - 公式逻辑:返回
TRUE代表当前A列单元格的值不在B列,FALSE代表在B列 - 选中辅助列,点击「数据」选项卡的「筛选」,筛选出
FALSE的行 - 选中这些行的A列单元格,直接删除内容(仅删单元格内容,不删行)
- 取消筛选后删掉辅助列即可
方法2:高级筛选(无需公式)
- 选中A列数据区域(包含表头)
- 点击「数据」选项卡的「高级」筛选,选择「将筛选结果复制到其他位置」
- 「列表区域」选A列数据,「条件区域」设置为两行:第一行输入
<>,第二行输入=B:B - 「复制到」选择空白列起始单元格,确定后即可得到A列中不在B列的所有值(含自身重复)
- 可将结果复制回原A列覆盖使用
方法3:VBA宏(适合大数据量批量处理)
按Alt+F11打开VBA编辑器,插入模块后粘贴以下代码:
Sub RemoveValuesInBFromA() Dim ws As Worksheet Dim rngA As Range, rngB As Range Dim cell As Range Dim dict As Object Set ws = ActiveSheet Set rngA = ws.Range("A1:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row) Set rngB = ws.Range("B1:B" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row) '将B列值存入字典提升查找效率 Set dict = CreateObject("Scripting.Dictionary") For Each cell In rngB If Not dict.Exists(cell.Value) Then dict.Add cell.Value, True End If Next cell '遍历A列,清空在B列存在的值 For Each cell In rngA If dict.Exists(cell.Value) Then cell.ClearContents End If Next cell Set dict = Nothing End Sub
- 按F5运行宏,A列中所有在B列出现过的值会被清空,自身重复项保留
- 注意:运行前建议备份数据,避免误操作
内容的提问来源于stack exchange,提问作者Robertas
相关产品推荐
相关产品推荐

