Excel宏编程,给出2列进行去重合并

在这里插入图片描述
在这里插入图片描述

Sub 去重合并()
arr = Worksheets("sheet1").Range("D1").Clear  '选择D列作为存储列,保存最后去重合并的值
arr = Worksheets("sheet1").UsedRange

Dim ARow As Long  'A列的行数
Dim BRow As Long  'B列的行数
ARow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row    '不带空格的行数
BRow = Sheet1.Range("B" & Rows.Count).End(xlUp).Row
Set d = CreateObject("Scripting.Dictionary")   '设置个字典类型的容器
ReDim brr(1 To ARow + BRow, 1)          '设置个1维数组,1列,行数最大为A和B行数之和,不包括空格

For n = 2 To ARow           '循环A列,从第二行开始,看你需要从哪个行开始
s = arr(n, 1)               '将从第二行开始的数据全部塞入s里
If d.Exists(s) Or s = "" Then  'd(s)是个计数器,如果s这个值不在字典d里,说明不重复,就加入brr()第一列中,如果单元格是空格就跳过
    '什么也不做
  Else
    j = j + 1
    d(s) = 1
    brr(j, 1) = s
End If
Next

For n = 2 To BRow           '循环B列数据,从第二行开始,看你需要从哪个行开始
s = arr(n, 2)               '将从第二行开始的数据全部塞入s里
If d.Exists(s) Or s = "" Then 'd(s)是个计数器,如果s这个值不在字典d里,说明不重复,就加入brr()第一列中,如果单元格是空格就跳过
'什么也不做
  Else
    j = j + 1
    d(s) = 1
    brr(j, 1) = s
    End If
Next
Worksheets("sheet1").[D2].Resize(UBound(brr), 1) = Application.Index(brr, 0, 2)
End Sub

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值