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

使用Range.RemoveDuplicates方法时触发Run-time error '1004'错误的技术求助

解决Excel VBA去重时的Run-time Error 1004问题

我之前也碰到过这个RemoveDuplicates的1004错误,咱们一步步排查可能的问题,给你对应的修复方案:

首先先把你的代码贴出来方便参考:

Set shUpl = Sheets("Upload")
Dim LR as Long
LR = shUpl.Cells(Rows.Count, 1).End(xlUp).Row
shUpl.Range("A1:O" & LR).RemoveDuplicates Columns:=Array(1, 2, 3, 5, 6, 7, 8, 9, 10), Header:=xlYes

1. 工作表引用的常见坑

最容易触发错误的就是Sheets("Upload")的引用问题:

  • 可能工作表名称有空格、大小写不一致(比如实际是" Upload"带前置空格,或者"upload"小写);
  • 或者工作表被隐藏、保护了,RemoveDuplicates无法操作受保护的工作表;
  • 还有可能你误引用了其他打开的工作簿的工作表,而非当前工作簿。

修复方案:

  • 改用工作表的CodeName(在VBA编辑器的属性窗口里的(Name)字段,比如Sheet1,这个不会随工作表名称修改而变化),稳定性拉满:
    Set shUpl = Sheet1 ' 替换成你Upload工作表的CodeName
    
  • 如果工作表被保护,先解除保护再执行去重:
    shUpl.Unprotect Password:="你的密码" ' 没有密码就去掉Password参数
    ' 执行去重代码
    shUpl.Protect Password:="你的密码" ' 执行完再保护回去
    

2. 范围计算的细节错误

你的LR计算可能存在隐性问题:Rows.Count默认引用当前活动工作表的行数,而非shUpl的,导致最后一行计算偏差;另外,去重范围内如果有合并单元格,RemoveDuplicates会直接报错(它完全不支持合并单元格)。

修复方案:

  • 明确指定shUpl的Rows来计算最后一行:
    LR = shUpl.Cells(shUpl.Rows.Count, 1).End(xlUp).Row
    
  • 先取消去重范围内的所有合并单元格:
    shUpl.Range("A1:O" & LR).UnMerge
    

3. 被忽略的筛选状态干扰

如果你的工作表处于自动筛选状态,RemoveDuplicates也会抛出1004错误,这个点很容易被忽略。

修复方案:
执行去重前先取消筛选:

If shUpl.AutoFilterMode Then shUpl.AutoFilterMode = False

4. 列参数与表头的验证

虽然你的列数组Array(1,2,3,5,6,7,8,9,10)在A1:O的范围内(A对应1,O对应15),但还是要检查:

  • 这些列是否有完全空的列?空列可能导致去重逻辑异常;
  • 确认第一行确实是表头,Header:=xlYes才有效,如果没有表头要改成Header:=xlNo。

修复后的完整代码

把上面的修复点整合起来,得到更稳健的代码:

Sub RemoveDuplicatesFixed()
    Dim shUpl As Worksheet
    Dim LR As Long
    
    ' 用CodeName引用工作表,避免名称变化的问题
    Set shUpl = Sheet1 ' 替换成你的Upload工作表的CodeName
    
    ' 取消自动筛选(如果存在)
    If shUpl.AutoFilterMode Then shUpl.AutoFilterMode = False
    
    ' 取消合并单元格(如果有)
    shUpl.Range("A1:O" & shUpl.Cells(shUpl.Rows.Count, 1).End(xlUp).Row).UnMerge
    
    ' 正确计算数据最后一行
    LR = shUpl.Cells(shUpl.Rows.Count, 1).End(xlUp).Row
    
    ' 执行去重
    shUpl.Range("A1:O" & LR).RemoveDuplicates Columns:=Array(1, 2, 3, 5, 6, 7, 8, 9, 10), Header:=xlYes
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 11:37:42