Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: fangniuji

[已解决]类型不匹配问题

[复制链接]
发表于 2012-12-1 15:39 | 显示全部楼层
重新定义一个够大的数组,超过65536,把D.KEYS转入新数组,再写入就OK了。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2012-12-1 15:46 | 显示全部楼层
本帖最后由 hwc2ycy 于 2012-12-1 15:48 编辑
  1.   Sub Eee()
  2.     Dim t#
  3.     t = Timer
  4.     If Range("a1") = "" Then
  5.         MsgBox "无数据可处理。"
  6.         Exit Sub
  7.     End If
  8.    
  9.     Dim d, Temp
  10.     Dim R&, R1&
  11.     Dim arr, arr1
  12.    
  13.     Set d = CreateObject("Scripting.Dictionary")
  14.     R = Range("A" & Rows.Count).End(xlUp).Row
  15.     R1 = Range("e" & Rows.Count).End(xlUp).Row
  16.     arr = Range("A1:A" & R).Value
  17.     arr1 = Range("e1:e" & R1).Value
  18.    
  19.     For Each Temp In arr
  20.         d(Temp) = 1
  21.     Next
  22.     For Each Temp In arr1
  23.         If Not d.Exists(Temp) Then
  24.             d(Temp) = 1
  25.         Else
  26.             d.Remove (Temp)
  27.         End If
  28.     Next
  29.    
  30.     Dim arr3(), k&
  31.     ReDim arr3(1 To d.Count, 1 To 1)
  32.     For Each Temp In d.keys
  33.         k = k + 1
  34.         arr3(k, 1) = Temp
  35.     Next
  36.     Range("b1").Resize(k, 1) = arr3
  37.     MsgBox Timer - t
  38.   End Sub
复制代码
回复

使用道具 举报

发表于 2012-12-1 15:46 | 显示全部楼层
7W行数据,确实够吃力啊,虽然也是几秒,相比于平常,感觉好人等。
回复

使用道具 举报

发表于 2012-12-1 15:47 | 显示全部楼层
今天算是学到知识点了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-4 09:35 , Processed in 0.107093 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表