如何利用EXCEL VBA将一列数据中不重复的数据读取到数组中?

如何利用EXCEL VBA将一列数据中不重复的数据读取到数组中?,第1张

利用字典去重,下面是示例代码,去除第一列的重复项Sub Test() '利用字典去重,字典的特性是key值不能重复

Dim Dic, Arr

Dim i As Integer, r As Integer

Dim Str As String

r = Sheet1.Range("A65536").End(xlUp).Row

If r = 1 Then Exit Sub '如果第一列没有数据那么退出程序

Set Dic = CreateObject("scripting.dictionary") '创建字典对象

For i = 1 To r '将第一列数据添加到字典的key值中

Dic(CStr(Cells(i, 1))) = ""

Next

Arr = Dic.keys '返回字典key的数组

Set Dic = Nothing '销毁对象

Str = Join(Arr, ",") '将数组中的内容显示为一字符串

MsgBox Str

End Sub

仅变这道题而言,直接使用 Excel 自身的删除重复项功能会更简单:

选择这块去除重复的区域;

主菜单中选择“数据”→“删除重复项”;

根据提示,默认“数据包含标题”选中,点击“确定”按钮即可。

用并集的方法解决,可参考我空间的并集

以下代码完成

你的数据在A、B两列中,把两列中不重复数据提取到C列

Sub 提取两列不重复数据1()

Dim d, Temp

Dim r&, r1

Dim arr, arr1

Set d = CreateObject("Scripting.Dictionary")

r = Range("A65536").End(xlUp).Row

r1 = Range("B65536").End(xlUp).Row

arr = Range("A1:A" &r).Value

arr1 = Range("B1:B" &r1).Value

For Each Temp In arr

d(Temp) = 1

Next

For Each Temp In arr1

d(Temp) = 1

Next

Range("C1").Resize(d.Count, 1) = Application.Transpose(d.keys)

End Sub

你只需要把你实际的数据列把A、B、C换成你的实际列标即可,A、B列可增减数据


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9934058.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存