Excel精英培训网

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

[已解决]数据匹配

[复制链接]
发表于 2015-3-29 16:20 | 显示全部楼层 |阅读模式
各位大神:

小弟需要在原始工作表中的J列也就是DC那一列要用C列TPNB那一列去vlookup库存表中的D列。用VBA编程怎么实现。


小弟不需要把范围写死,因为原始中的数据会每天添加,库存表中的数据也会每天添加,J列随着数据添加自己会自动填充。

谢谢大神了。
最佳答案
2015-3-29 16:32
本帖最后由 26759761@qq.com 于 2015-3-29 17:05 编辑
  1. Sub x()
  2. Dim ar, x, br()
  3. On Error Resume Next
  4.   ar = Range("c2:c" & [c65500].End(3).Row)
  5.    r = UBound(ar): ReDim br(1 To r, 1 To 1)
  6.    For x = 1 To r
  7.     br(x, 1) = Sheets("库存").[a:a].Find(ar(x, 1)).Offset(0, 3)
  8.    Next
  9.    [j2].Resize(r) = br
  10. End Sub
复制代码

数据.rar

37.68 KB, 下载次数: 13

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-3-29 16:32 | 显示全部楼层    本楼为最佳答案   
本帖最后由 26759761@qq.com 于 2015-3-29 17:05 编辑
  1. Sub x()
  2. Dim ar, x, br()
  3. On Error Resume Next
  4.   ar = Range("c2:c" & [c65500].End(3).Row)
  5.    r = UBound(ar): ReDim br(1 To r, 1 To 1)
  6.    For x = 1 To r
  7.     br(x, 1) = Sheets("库存").[a:a].Find(ar(x, 1)).Offset(0, 3)
  8.    Next
  9.    [j2].Resize(r) = br
  10. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2015-3-29 16:49 | 显示全部楼层
26759761@qq.com 发表于 2015-3-29 16:32
你给你的数据一个都查找不到

大神,是这样的,如果用vlookup做的,就是原始工作表中J列,也就是DC那列用C列去匹库存工作表中Al列到D列。我刚运行了下,没数据
回复

使用道具 举报

 楼主| 发表于 2015-3-29 16:56 | 显示全部楼层
正宗新手 发表于 2015-3-29 16:49
大神,是这样的,如果用vlookup做的,就是原始工作表中J列,也就是DC那列用C列去匹库存工作表中Al列到D列 ...

  • 我把 br(x, 1) = Sheets("库存").[c:c].Find(ar(x, 1))
中的C:C改成了a:d.能运行,但是数据就显示的是库存工作表中的A列了,单我要的是D列的数据
回复

使用道具 举报

发表于 2015-3-29 16:58 | 显示全部楼层
把你vlookup的公式贴出来
回复

使用道具 举报

 楼主| 发表于 2015-3-29 17:02 | 显示全部楼层
26759761@qq.com 发表于 2015-3-29 16:58
把你vlookup的公式贴出来

=VLOOKUP(C2,库存!A:D,4,0)
回复

使用道具 举报

 楼主| 发表于 2015-3-29 17:04 | 显示全部楼层
26759761@qq.com 发表于 2015-3-29 16:58
把你vlookup的公式贴出来

J2=VLOOKUP(C2,库存!A:D,4,0)

点评

2楼更新了,你试下  发表于 2015-3-29 17:06
回复

使用道具 举报

发表于 2015-3-30 09:46 | 显示全部楼层
  1. Sub Macro1()
  2. Dim ar, br, d, i&
  3. Set d = CreateObject("scripting.dictionary")
  4. Sheets("原始").Activate
  5. ar = Range("a1").CurrentRegion
  6. br = Sheets("库存").Range("a1").CurrentRegion
  7. For i = 2 To UBound(br)
  8.     d("'" & br(i, 1)) = br(i, 4)
  9. Next
  10. For i = 2 To UBound(ar)
  11.     ar(i, 10) = d("'" & ar(i, 3))
  12. Next
  13. Range("j1").Resize(UBound(ar)) = Application.Index(ar, 0, 10)
  14. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 07:05 , Processed in 0.327358 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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