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

(0)

相关推荐