如何将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
代码说明
- 先定位到目标工作表
PS Analysis - 自动获取B、L列的最后有效数据行,避免硬编码行号
- 先将B列数据复制到E4起始位置,再将L列数据追加到E列现有数据的下方
- 调用
RemoveDuplicates方法删除E列中从E4开始的重复值,指定无表头(如果E4上方有表头,可将Header:=xlNo改为Header:=xlYes)
内容的提问来源于stack exchange,提问作者Grayson
相关产品推荐
相关产品推荐

