Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2092|回复: 6

[已解决]VBA字典匹配无效,求大神指点!!

[复制链接]
发表于 2017-3-9 16:35 | 显示全部楼层 |阅读模式
本帖最后由 诺然偶然 于 2017-3-10 16:34 编辑

需要将工作表数据与数据表的匹配,也是大神给写的代码,看了好久,依葫芦画瓢修改了下,但是后面的比列没有匹配上,求指导,或者有更好的方法请不吝赐教,先谢过了!!!
最佳答案
2017-3-9 21:26
  1. Sub test()
  2.     Application.ScreenUpdating = False
  3.     Dim d, arr, brr, crr, r&
  4.    
  5.     Set d = CreateObject("scripting.dictionary")
  6.     arr = ThisWorkbook.Sheets(2).[a1].CurrentRegion
  7.     For r = 2 To UBound(arr)
  8.         d(arr(r, 1)) = arr(r, 3)
  9.     Next
  10.     crr = ThisWorkbook.Sheets(4).[a1].CurrentRegion
  11.     For r = 2 To UBound(crr)
  12.         d(crr(r, 1)) = crr(r, 2)
  13.     Next
  14.    
  15.     With Workbooks(2).Sheets(1)    '这里最好写workbooks(文件名)
  16.         brr = .[a1].CurrentRegion
  17.         For r = 2 To UBound(brr)
  18.              brr(r, 3) = d(brr(r, 2))
  19.              brr(r, 5) = d(brr(r, 4))
  20.         Next
  21.         .[a1].Resize(UBound(brr), UBound(brr, 2)) = brr
  22.     End With
  23.     Set d = Nothing
  24.     Application.ScreenUpdating = True
  25. End Sub
复制代码
工作表.png
数据表.png

附件.zip

20.05 KB, 下载次数: 17

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-3-9 21:26 | 显示全部楼层    本楼为最佳答案   
  1. Sub test()
  2.     Application.ScreenUpdating = False
  3.     Dim d, arr, brr, crr, r&
  4.    
  5.     Set d = CreateObject("scripting.dictionary")
  6.     arr = ThisWorkbook.Sheets(2).[a1].CurrentRegion
  7.     For r = 2 To UBound(arr)
  8.         d(arr(r, 1)) = arr(r, 3)
  9.     Next
  10.     crr = ThisWorkbook.Sheets(4).[a1].CurrentRegion
  11.     For r = 2 To UBound(crr)
  12.         d(crr(r, 1)) = crr(r, 2)
  13.     Next
  14.    
  15.     With Workbooks(2).Sheets(1)    '这里最好写workbooks(文件名)
  16.         brr = .[a1].CurrentRegion
  17.         For r = 2 To UBound(brr)
  18.              brr(r, 3) = d(brr(r, 2))
  19.              brr(r, 5) = d(brr(r, 4))
  20.         Next
  21.         .[a1].Resize(UBound(brr), UBound(brr, 2)) = brr
  22.     End With
  23.     Set d = Nothing
  24.     Application.ScreenUpdating = True
  25. End Sub
复制代码

评分

参与人数 1 +9 收起 理由
苏子龙 + 9 我和小伙伴都惊呆了

查看全部评分

回复

使用道具 举报

发表于 2017-3-9 21:33 | 显示全部楼层
本帖最后由 today0427 于 2017-3-9 21:36 编辑

这题目弄得我莫名其妙,不知道两个表靠什么条件关联到一起。小明和油条是什么关系?最近做题少,感觉自己有点傻了

评分

参与人数 1 +9 收起 理由
苏子龙 + 9 你师傅写的,杠杠的

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-3-10 16:34 | 显示全部楼层
非常感谢,我还要回去慢慢研究一下
回复

使用道具 举报

 楼主| 发表于 2017-3-10 16:37 | 显示全部楼层
today0427 发表于 2017-3-9 21:33
这题目弄得我莫名其妙,不知道两个表靠什么条件关联到一起。小明和油条是什么关系?最近做题少,感觉 ...

请不要在意这些细节
回复

使用道具 举报

 楼主| 发表于 2017-3-10 18:24 | 显示全部楼层
恕我愚昧,能否解释下         
brr(r, 3) = d(brr(r, 2)) '数组第三列=?
brr(r, 5) = d(brr(r, 4)) '数组第五列=?
回复

使用道具 举报

 楼主| 发表于 2017-3-10 18:46 | 显示全部楼层
诺然偶然 发表于 2017-3-10 18:24
恕我愚昧,能否解释下         
brr(r, 3) = d(brr(r, 2)) '数组第三列=?
brr(r, 5) = d(brr(r, 4)) ' ...

我知道了,表示数组中空缺的第三列和第二列按照字典来匹配,原谅我反应慢半拍
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 08:22 , Processed in 0.438821 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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