Excel精英培训网

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

[已解决]如何使用代码补数?

[复制链接]
发表于 2013-1-19 22:21 | 显示全部楼层 |阅读模式
附件 补数附件.rar (131.95 KB, 下载次数: 11)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-1-19 23:07 | 显示全部楼层
加辅助列后用函数也很方便
vba:
Sub test()
Dim d As New Dictionary, ar()
ar = [a1].Resize([a65536].End(3).Row, 4).Value
For i% = 1 To UBound(ar)
    d(ar(i, 1) & "|" & ar(i, 2) & "|" & ar(i, 3)) = ar(i, 4)
Next
ar = [m1].Resize([m65536].End(3).Row, 3).Value
For i = 1 To UBound(ar)
   If d.Exists(ar(i, 1) & "|" & ar(i, 2) & "|" & ar(i, 3)) Then ar(i, 1) = d(ar(i, 1) & "|" & ar(i, 2) & "|" & ar(i, 3))
Next
[s1].Resize(i - 1, 1) = ar
End Sub
回复

使用道具 举报

 楼主| 发表于 2013-1-19 23:27 | 显示全部楼层
上清宫主 发表于 2013-1-19 23:07
加辅助列后用函数也很方便
vba:
Sub test()

未命名.jpg 谢谢老师。代码复进附件去试了一下,会出错。

回复

使用道具 举报

发表于 2013-1-20 02:41 | 显示全部楼层    本楼为最佳答案   
字典的声明问题
  1. Sub test()
  2. Set d = CreateObject("scripting.dictionary")
  3. ar = [a1].Resize([a65536].End(3).Row, 4).Value
  4. For i% = 1 To UBound(ar)
  5.     d(ar(i, 1) & "|" & ar(i, 2) & "|" & ar(i, 3)) = ar(i, 4)
  6. Next
  7. ar = [m1].Resize([m65536].End(3).Row, 3).Value
  8. For i = 1 To UBound(ar)
  9.    If d.Exists(ar(i, 1) & "|" & ar(i, 2) & "|" & ar(i, 3)) Then ar(i, 1) = d(ar(i, 1) & "|" & ar(i, 2) & "|" & ar(i, 3))
  10. Next
  11. [s1].Resize(i - 1, 1) = ar
  12. End Sub

复制代码

评分

参与人数 1 +1 收起 理由
HongMeig + 1 很给力!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 08:40 , Processed in 0.251346 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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