Excel精英培训网

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

[已解决]用VBA找出目的表与源表相同人的信息,并删除源表内的人的信息。(要求有改动)

[复制链接]
发表于 2014-5-18 15:51 | 显示全部楼层 |阅读模式
本帖最后由 wxb120205 于 2014-5-20 15:50 编辑

我的目的是想通过判断sheet2中的B列单元格中非空单元格中的某一单元格(如sheet2中的B3单元格)与sheet1中的B列单元格中的某一单元格内容(字符型)相同时(如与sheet1中的B27单元格相同),
既将sheet1表Range("C27:I27")区域的相对应的单元格内容粘贴到sheet2中相对应的(C3:I3)单元格区域内,并在sheet2中的G3单元格中的“类别”项内加入“夜考”,同时删除sheet1中的第Row27行。相关表格见附件,请各位高手老大帮忙,谢谢!!!请给出VBA程序,不能用函数“VlookUP”,因为用函数需要做两次太麻烦,也容易出错。

改了要求:(2014年5月20日)请注意黄底红字的内容!

我的目的是想通过判断sheet2中的B列单元格中非空单元格中的某一单元格(如sheet2中的B3单元格)与sheet1中的B列单元格中的某一单元格内容(字符型)相同时(如与sheet1中的B27单元格相同),
既将sheet1表Range("C27:I27")区域的相对应的单元格内容粘贴到sheet2中相对应的(C3:I3)单元格区域内,并在sheet1中的G27单元格中的“类别”项内加入“夜考”,全部找完并在sheet1中的G27单元格中的“类别”项内加入“夜考”后再按“夜考”项自动排序。相关表格见附件(在一楼的附件,谢谢!!!),请各位高手老大帮忙,谢谢!!!请给出VBA程序,不能用函数“VlookUP”,因为用函数需要做两次太麻烦,也容易出错。

补充:sheet2中B3单元格与Sheet1中B27单元格内容相同,接下来,拷贝Sheet1中C27:I27  到 sheet2中C3:I3,并在sheet1中的G27单元格中的“类别”项内加入“夜考”,全部找完并在sheet1中的G27单元格中的“类别”项内加入“夜考”后再按“夜考”项自动排序。

最佳答案
2014-5-18 16:21
  1. Sub Macro1()
  2. Dim arr, brr, d, rng As Range, i&
  3. Set d = CreateObject("scripting.dictionary")
  4. Sheets("Sheet2").Activate
  5. With Sheets("Sheet1")
  6. arr = .Range("a1").CurrentRegion
  7. brr = Range("a1").CurrentRegion
  8. For i = 3 To UBound(arr)
  9.     d(arr(i, 2)) = i
  10. Next
  11. For i = 3 To UBound(brr)
  12.     If brr(i, 2) <> "" And d.exists(brr(i, 2)) Then
  13.         n = d(brr(i, 2))
  14.         .Cells(n, 3).Resize(1, 7).Copy Cells(i, 3)
  15.         Cells(i, "g") = "夜考"
  16.         If rng Is Nothing Then Set rng = .Cells(n, 3) Else Set rng = Union(rng, .Cells(n, 3))
  17.     End If
  18. Next
  19. If Not rng Is Nothing Then rng.EntireRow.Delete
  20. End With
  21. End Sub
复制代码

五期科目三二批正式考试车费2014.4.2800.xls.zip

92.89 KB, 下载次数: 7

 楼主| 发表于 2014-5-18 15:54 | 显示全部楼层
补充:sheet2中B3单元格与Sheet1中B27单元格内容相同,接下来,拷贝Sheet1中C27:I27  到 sheet2中C3:I3,并在sheet2中的G3单元格内 加入“夜考”,同时删除sheet1中Row(27) 第27行。
回复

使用道具 举报

发表于 2014-5-18 16:21 | 显示全部楼层    本楼为最佳答案   
  1. Sub Macro1()
  2. Dim arr, brr, d, rng As Range, i&
  3. Set d = CreateObject("scripting.dictionary")
  4. Sheets("Sheet2").Activate
  5. With Sheets("Sheet1")
  6. arr = .Range("a1").CurrentRegion
  7. brr = Range("a1").CurrentRegion
  8. For i = 3 To UBound(arr)
  9.     d(arr(i, 2)) = i
  10. Next
  11. For i = 3 To UBound(brr)
  12.     If brr(i, 2) <> "" And d.exists(brr(i, 2)) Then
  13.         n = d(brr(i, 2))
  14.         .Cells(n, 3).Resize(1, 7).Copy Cells(i, 3)
  15.         Cells(i, "g") = "夜考"
  16.         If rng Is Nothing Then Set rng = .Cells(n, 3) Else Set rng = Union(rng, .Cells(n, 3))
  17.     End If
  18. Next
  19. If Not rng Is Nothing Then rng.EntireRow.Delete
  20. End With
  21. End Sub
复制代码
回复

使用道具 举报

发表于 2014-5-18 16:32 | 显示全部楼层
………………

五期科目三二批正式考试车费2014.4.2800.zip

96.02 KB, 下载次数: 15

回复

使用道具 举报

 楼主| 发表于 2014-5-18 16:37 | 显示全部楼层
感谢你的努力,我先下载看看,有需要改进的地方还要麻烦您。
回复

使用道具 举报

 楼主| 发表于 2014-5-20 14:34 | 显示全部楼层
本帖最后由 wxb120205 于 2014-5-20 14:42 编辑

改了要求:(2014年5月20日)请注意黄底红字的内容!

我的目的是想通过判断sheet2中的B列单元格中非空单元格中的某一单元格(如sheet2中的B3单元格)与sheet1中的B列单元格中的某一单元格内容(字符型)相同时(如与sheet1中的B27单元格相同),
既将sheet1表Range("C27:I27")区域的相对应的单元格内容粘贴到sheet2中相对应的(C3:I3)单元格区域内,并在sheet1中的G27单元格中的“类别”项内加入“夜考”,全部找完并在sheet1中的G27单元格中的“类别”项内加入“夜考”后再按“夜考”项自动排序。相关表格见附件(在一楼的附件,谢谢!!!),请各位高手老大帮忙,谢谢!!!请给出VBA程序,不能用函数“VlookUP”,因为用函数需要做两次太麻烦,也容易出错。

补充:sheet2中B3单元格与Sheet1中B27单元格内容相同,接下来,拷贝Sheet1中C27:I27  到 sheet2中C3:I3,并在sheet1中的G27单元格中的“类别”项内加入“夜考”,全部找完并在sheet1中的G27单元格中的“类别”项内加入“夜考”后再按“夜考”项自动排序。




回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-18 16:00 , Processed in 0.319333 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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