作者:绿色风
分类:
时间:2022-08-18
浏览:171
楼主 xmyjk |
Q:如何利用vba分别从sheet1中找出sheet2不存在姓名,从sheet2中找出sheet1中不存在姓名,并用红色显示出来?(只对两表中代码为1的姓名进行比较,代码为1的人数要自动判断)
A:- Option Explicit
- Sub test1()
- Dim arr, brr, n1, n2, d, i As Long
- n1 = Sheet1.[a65536].End(3).Row
- n2 = Sheet2.[a65536].End(3).Row
- arr = Sheet1.Range("a2:b" & n1).Value
- brr = Sheet2.Range("a2:b" & n2).Value
- Set d = CreateObject("scripting.dictionary")
- For i = 1 To UBound(brr)
- If brr(i, 1) = 1 Then
- d(brr(i, 2)) = ""
- End If
- Next
- For i = 1 To UBound(arr)
- 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
- Next
- End Sub
- Sub test2()
- Dim arr, brr, n1, n2, d, i As Long
- n1 = Sheet2.[a65536].End(3).Row
- n2 = Sheet1.[a65536].End(3).Row
- arr = Sheet2.Range("a2:b" & n1).Value
- brr = Sheet1.Range("a2:b" & n2).Value
- Set d = CreateObject("scripting.dictionary")
- For i = 1 To UBound(brr)
- If brr(i, 1) = 1 Then
- d(brr(i, 2)) = ""
- End If
- Next
- For i = 1 To UBound(arr)
- 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
- Next
- End Sub
找姓名不同.rar |
2楼 xyf2210 |
数组字典好娴熟,学习 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一