You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除指定列重复项且保留该行其他列数据?VBA代码求助

仅清除指定列重复值(保留其他列数据)的VBA实现

原代码使用RemoveDuplicates方法会直接删除整行,不符合你的需求。要实现只清除目标列(CJ列,即第88列)的重复值、保留该行其他列数据,可以通过字典记录已出现的值,遍历清除重复项,具体代码如下:

修正后的代码

Dim ws As Worksheet
Dim lastRow As Long
Dim cell As Range
Dim duplicateDict As Object

' 指定目标工作表,替换为你的实际表名
Set ws = ThisWorkbook.Worksheets("Sheet1")
' 获取CJ列的最后一行数据行号
lastRow = ws.Cells(ws.Rows.Count, "CJ").End(xlUp).Row
' 创建字典用于存储已出现的CJ列值
Set duplicateDict = CreateObject("Scripting.Dictionary")

' 从表头下一行开始遍历(假设第1行是表头)
For Each cell In ws.Range("CJ2:CJ" & lastRow)
    If duplicateDict.Exists(cell.Value) Then
        ' 若值已存在,清除当前单元格的重复内容
        cell.ClearContents
    Else
        ' 若值首次出现,存入字典标记
        duplicateDict.Add cell.Value, cell.Row
    End If
Next cell

' 释放对象,避免内存占用
Set duplicateDict = Nothing
Set ws = Nothing

关键说明

  1. 字典的作用:通过Scripting.Dictionary快速判断当前值是否已出现过,比嵌套循环效率高很多,适合大数据量场景
  2. 仅清除目标列:代码只对CJ列的重复单元格执行ClearContents,不会影响其他列的数据
  3. 原代码错误修正:你原代码中的x1yes是拼写错误,正确常量应为xlYes(是字母l,不是数字1)

内容的提问来源于stack exchange,提问作者Mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 00:23:23