50万行数据对比
一、截图
二、动画效果
三、闲聊一下
今天只所以分享这个,是告诉大家一个道理,如果你的数据5万以上的,你用函数,数组公式解决,你的工作簿打开,保存,编辑都会像蜗牛一样慢,我相信有部分同学有过这种痛苦,这种等待的痛苦,你今天看了这文章后,这样的数据一定要vba处理了,当然你的数据是几千行倒是用函数,数组解决就可以了,我测试了50行数据用时12秒多,也许你今天用不到这个,可能以后你会用,你可以复制收藏此代码,下面的代码我用是vba数组加字典完成的。
四、vba代码
Option Explicit
Sub 两列数据对比()
Dim arr1, arr2, dic, x, y, t!
t = Timer '计时器
Call 清空 '清空原有的数据
Set dic = CreateObject("Scripting.Dictionary") '引用外部对象字典
arr1 = Range("A1").CurrentRegion '把区域写入数组
arr2 = Range("D1").CurrentRegion
For x = 2 To UBound(arr1) '循环数组arr1
dic(arr1(x, 1)) = x '装入字典,且把相应的行号装入条目,便于找到相的同时标识“相同”两字
Next x
'======================
For y = 2 To UBound(arr2) '循环数组arr2
If dic.exists(arr2(y, 1)) Then '如果在字典存在,说明两列都有,在对应的列输入相同”两字
arr2(y, 2) = "相同"
arr1(dic(arr2(y, 1)), 2) = "相同"
End If
Next y
[A1].Resize(UBound(arr1), UBound(arr1, 2)) = arr1 '处理的数据重新从数组arr1读出
[D1].Resize(UBound(arr2), UBound(arr2, 2)) = arr2 '处理的数据重新从数组arr2读出
MsgBox "用时" & Format(Timer - t, "0.00秒")
End Sub
Sub 清空()
Range("B2:B" & Rows.Count).ClearContents
Range("E2:E" & Rows.Count).ClearContents
End Sub