Excel精英培训网

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

[已解决]较复杂的两表比对

[复制链接]
发表于 2013-7-27 21:43 | 显示全部楼层 |阅读模式
      通过比较“上学年”和“本学年”两表学生姓名和家长姓名,如两表带黄色的行,上学年表中黄色的本学年中没有,把上学年中黄色的行粘贴到“辍学”,把“本学年”黄色的行粘贴到“转入”表。
    当然完整表中行数很多的。
不知能不能实现此功能,请各位高手赐教!
    这里先谢谢大家!

最佳答案
2013-7-28 00:20
  1. Option Explicit

  2. Dim A, B, C, d, i, j, s
  3. Sub test()
  4.     A = Sheet1.Range("a1").CurrentRegion
  5.     B = Sheet2.Range("a1").CurrentRegion
  6.     Set d = CreateObject("scripting.dictionary")
  7.     test2
  8.     test3 B, A, "辍学"
  9.     test3 A, B, "转入"
  10. End Sub

  11. Sub test2()
  12.     ReDim C(1 To 10 ^ 4, 1 To UBound(A, 2))
  13.     For j = 1 To UBound(C, 2)
  14.         C(1, j) = A(4, j)
  15.     Next j
  16. End Sub

  17. Sub test3(A, B, str)
  18.     d.RemoveAll
  19.     For i = 5 To UBound(A)
  20.         d(A(i, 2)) = ""
  21.     Next i
  22.     s = 1
  23.     For i = 5 To UBound(B)
  24.         If d.exists(B(i, 2)) = False Then
  25.             s = s + 1
  26.             For j = 1 To UBound(B, 2)
  27.                 C(s, j) = B(i, j)
  28.             Next j
  29.         End If
  30.     Next i
  31.     With Sheets(str)
  32.         .Cells.ClearContents
  33.         .Range("a1").Resize(s, j - 1) = C
  34.     End With
  35. End Sub
复制代码
较复杂的两表比对2.rar (16.69 KB, 下载次数: 18)

较复杂的两表比对.rar

4.54 KB, 下载次数: 10

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-7-27 22:36 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-7-27 22:55 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-7-27 22:55 | 显示全部楼层
谢谢你的光顾
回复

使用道具 举报

 楼主| 发表于 2013-7-27 22:56 | 显示全部楼层
不过 能用函数也行
就是怕运行速度慢
回复

使用道具 举报

发表于 2013-7-27 23:20 | 显示全部楼层
这个用VLOOKUP查一下,手动复制一下就好了.没有说的那么复杂.
回复

使用道具 举报

发表于 2013-7-28 00:20 | 显示全部楼层    本楼为最佳答案   
  1. Option Explicit

  2. Dim A, B, C, d, i, j, s
  3. Sub test()
  4.     A = Sheet1.Range("a1").CurrentRegion
  5.     B = Sheet2.Range("a1").CurrentRegion
  6.     Set d = CreateObject("scripting.dictionary")
  7.     test2
  8.     test3 B, A, "辍学"
  9.     test3 A, B, "转入"
  10. End Sub

  11. Sub test2()
  12.     ReDim C(1 To 10 ^ 4, 1 To UBound(A, 2))
  13.     For j = 1 To UBound(C, 2)
  14.         C(1, j) = A(4, j)
  15.     Next j
  16. End Sub

  17. Sub test3(A, B, str)
  18.     d.RemoveAll
  19.     For i = 5 To UBound(A)
  20.         d(A(i, 2)) = ""
  21.     Next i
  22.     s = 1
  23.     For i = 5 To UBound(B)
  24.         If d.exists(B(i, 2)) = False Then
  25.             s = s + 1
  26.             For j = 1 To UBound(B, 2)
  27.                 C(s, j) = B(i, j)
  28.             Next j
  29.         End If
  30.     Next i
  31.     With Sheets(str)
  32.         .Cells.ClearContents
  33.         .Range("a1").Resize(s, j - 1) = C
  34.     End With
  35. End Sub
复制代码
较复杂的两表比对2.rar (16.69 KB, 下载次数: 18)
回复

使用道具 举报

 楼主| 发表于 2013-7-28 08:27 | 显示全部楼层
谢谢爱疯的鼎力支持和帮助!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 12:07 , Processed in 0.412896 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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