Excel精英培训网

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

[已解决]关于比对数据

[复制链接]
发表于 2017-6-28 12:42 | 显示全部楼层 |阅读模式
表1和表2的某一列数据进行一一比对,比对成功后,将表2的 另一列 填到 表1 的另一列。。
最佳答案
2017-6-28 13:53
本帖最后由 chart888 于 2017-6-28 13:54 编辑
  1. Private Sub CommandButton1_Click()
  2. Dim Arr, Brr
  3. Dim i, j
  4. Application.ScreenUpdating = False
  5. Set d = CreateObject("scripting.dictionary")
  6. Arr = Worksheets("总表").[A1].CurrentRegion
  7. For i = 2 To UBound(Arr)
  8.     d(Arr(i, 1)) = Arr(i, 2)
  9. Next
  10. With Worksheets("明细表")
  11.     r = .Cells(Rows.Count, 1).End(3).Row
  12.     Brr = Worksheets("明细表").Range("A2:B" & r)
  13.     For j = 1 To UBound(Brr)
  14.         If d.exists(Brr(j, 1)) Then
  15.             Brr(j, 2) = d(Brr(j, 1))
  16.         End If
  17.     Next
  18.     .Range("A2:B" & r).ClearContents
  19.     .Range("A2:B" & r) = Brr
  20. End With
  21. Application.ScreenUpdating = True
  22. End Sub
复制代码

事例.rar

9.37 KB, 下载次数: 12

 楼主| 发表于 2017-6-28 13:01 | 显示全部楼层
回复

使用道具 举报

发表于 2017-6-28 13:01 | 显示全部楼层
回复

使用道具 举报

发表于 2017-6-28 13:03 | 显示全部楼层
B2单元格输入公式,下拉
=VLOOKUP(A2,总表!$A$1:$B$5,2,FALSE)
当然如果必须要用VBA的话也是可以的。
回复

使用道具 举报

 楼主| 发表于 2017-6-28 13:08 | 显示全部楼层
chart888 发表于 2017-6-28 13:01
不是一对一的 怎么进行匹配?

1对1,1对多都有可能出现。。  如果符合,1对1或1对多 后面的那列 就填 1 后面的那列。
回复

使用道具 举报

发表于 2017-6-28 13:12 | 显示全部楼层
fanzhongren123 发表于 2017-6-28 13:08
1对1,1对多都有可能出现。。  如果符合,1对1或1对多 后面的那列 就填 1 后面的那列。

你能举个例子吗
回复

使用道具 举报

 楼主| 发表于 2017-6-28 13:14 | 显示全部楼层
两张表。 总表和明细表,共同点是 都有单号。只是明细表的同一个单号会出2次或更多次。 如果明细表的单号和总表的单号对上了,那么就把明细表的单号后面一列填入 总表单号的后面一列。
回复

使用道具 举报

 楼主| 发表于 2017-6-28 13:21 | 显示全部楼层
大灰狼1976 发表于 2017-6-28 13:03
B2单元格输入公式,下拉
=VLOOKUP(A2,总表!$A$1:$B$5,2,FALSE)
当然如果必须要用VBA的话也是可以的。

公式不行哦。。几千行数据,只有前四行可以查找出。后面的都出现了错误
回复

使用道具 举报

发表于 2017-6-28 13:53 | 显示全部楼层    本楼为最佳答案   
本帖最后由 chart888 于 2017-6-28 13:54 编辑
  1. Private Sub CommandButton1_Click()
  2. Dim Arr, Brr
  3. Dim i, j
  4. Application.ScreenUpdating = False
  5. Set d = CreateObject("scripting.dictionary")
  6. Arr = Worksheets("总表").[A1].CurrentRegion
  7. For i = 2 To UBound(Arr)
  8.     d(Arr(i, 1)) = Arr(i, 2)
  9. Next
  10. With Worksheets("明细表")
  11.     r = .Cells(Rows.Count, 1).End(3).Row
  12.     Brr = Worksheets("明细表").Range("A2:B" & r)
  13.     For j = 1 To UBound(Brr)
  14.         If d.exists(Brr(j, 1)) Then
  15.             Brr(j, 2) = d(Brr(j, 1))
  16.         End If
  17.     Next
  18.     .Range("A2:B" & r).ClearContents
  19.     .Range("A2:B" & r) = Brr
  20. End With
  21. Application.ScreenUpdating = True
  22. End Sub
复制代码

事例.zip

24.62 KB, 下载次数: 7

回复

使用道具 举报

发表于 2017-6-28 14:00 | 显示全部楼层
请看附件。。。。。。。。。。
QQ截图20170628135958.png

事例.rar

16.23 KB, 下载次数: 8

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-23 21:14 , Processed in 0.418023 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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