ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 如何用vba把两表中不同的姓名找出来?

如何用vba把两表中不同的姓名找出来?

作者:绿色风 分类: 时间:2022-08-18 浏览:94
楼主
xmyjk
Q:如何利用vba分别从sheet1中找出sheet2不存在姓名,从sheet2中找出sheet1中不存在姓名,并用红色显示出来?(只对两表中代码为1的姓名进行比较,代码为1的人数要自动判断)


A:
  1. Option Explicit

  2. Sub test1()
  3. Dim arr, brr, n1, n2, d, i As Long

  4. n1 = Sheet1.[a65536].End(3).Row
  5. n2 = Sheet2.[a65536].End(3).Row

  6. arr = Sheet1.Range("a2:b" & n1).Value
  7. brr = Sheet2.Range("a2:b" & n2).Value

  8. Set d = CreateObject("scripting.dictionary")

  9. For i = 1 To UBound(brr)
  10.    If brr(i, 1) = 1 Then
  11.       d(brr(i, 2)) = ""
  12.    End If
  13. Next

  14. For i = 1 To UBound(arr)
  15.    If arr(i, 1) = 1 And Not (d.exists(arr(i, 2))) Then Sheet1.Range(Cells(i + 1, 1), Cells(i + 1, 2)).Interior.ColorIndex = 3
  16. Next

  17. End Sub

  18. Sub test2()
  19. Dim arr, brr, n1, n2, d, i As Long

  20. n1 = Sheet2.[a65536].End(3).Row
  21. n2 = Sheet1.[a65536].End(3).Row

  22. arr = Sheet2.Range("a2:b" & n1).Value
  23. brr = Sheet1.Range("a2:b" & n2).Value

  24. Set d = CreateObject("scripting.dictionary")

  25. For i = 1 To UBound(brr)
  26.    If brr(i, 1) = 1 Then
  27.       d(brr(i, 2)) = ""
  28.    End If
  29. Next

  30. For i = 1 To UBound(arr)
  31.    If arr(i, 1) = 1 And Not (d.exists(arr(i, 2))) Then Worksheets("Sheet2").Select: Range(Cells(i + 1, 1), Cells(i + 1, 2)).Interior.ColorIndex = 3
  32. Next

  33. End Sub


找姓名不同.rar
2楼
xyf2210
数组字典好娴熟,学习

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap