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

如何将Excel两列数据合并至一列并删除重复项(VBA宏求助)

合并两列数据并删除重复项的VBA代码修正

需求:将B4起始的列数据、L4起始的列数据合并到E4起始的列中,最终删除E列内的重复项。

原代码存在的问题

  • 存在无效的单元格范围引用(如L4:B&lastRowB),属于语法错误
  • 包含冗余的复制操作(复制B3、L3的代码完全不符合需求)
  • 缺少核心的删除重复项逻辑

修正后的完整代码

Sub MergeAndRemoveDuplicates()
    ' 合并B、L列数据到E列并删除重复项
    Dim ws As Worksheet
    Dim lastRowB As Long, lastRowL As Long, lastRowE As Long
    
    ' 指定目标工作表
    Set ws = ThisWorkbook.Sheets("PS  Analysis")
    
    ' 获取B列最后一行数据行号
    lastRowB = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
    ' 获取L列最后一行数据行号
    lastRowL = ws.Cells(ws.Rows.Count, "L").End(xlUp).Row
    
    ' 复制B4到B列最后一行的数据到E4起始位置
    ws.Range("B4:B" & lastRowB).Copy Destination:=ws.Range("E4")
    
    ' 计算E列当前最后一行,准备追加L列数据
    lastRowE = ws.Cells(ws.Rows.Count, "E").End(xlUp).Row + 1
    ' 复制L4到L列最后一行的数据到E列末尾
    ws.Range("L4:L" & lastRowL).Copy Destination:=ws.Cells(lastRowE, "E")
    
    ' 删除E列从E4开始的重复项
    ws.Range("E4:E" & ws.Cells(ws.Rows.Count, "E").End(xlUp).Row).RemoveDuplicates Columns:=1, Header:=xlNo
End Sub

代码说明

  1. 先定位到目标工作表PS Analysis
  2. 自动获取B、L列的最后有效数据行,避免硬编码行号
  3. 先将B列数据复制到E4起始位置,再将L列数据追加到E列现有数据的下方
  4. 调用RemoveDuplicates方法删除E列中从E4开始的重复值,指定无表头(如果E4上方有表头,可将Header:=xlNo改为Header:=xlYes)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 13:25:09