Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: cunfu2010

[已解决]两个工作表的数据比对

[复制链接]
 楼主| 发表于 2016-5-19 23:05 | 显示全部楼层
dsmch 发表于 2016-5-13 09:30

这是附件,我抽取了两个进行了模拟,其实有很多,意思就是:如果sheet1表中的数据与sheet2表的数据相同则字体标红,不同的隐藏起来。和开贴时的目的正相反。谢谢!!!

两个工作表数据比对.rar

9.2 KB, 下载次数: 7

回复

使用道具 举报

发表于 2016-5-19 23:18 | 显示全部楼层
  1. Sub Macro1()
  2. Dim arr, brr, ar, d, d2, i&, j%
  3. Set d = CreateObject("scripting.dictionary")
  4. Set d2 = CreateObject("scripting.dictionary")
  5. arr = Sheet1.Range("a1").CurrentRegion
  6. brr = Sheet2.Range("a1").CurrentRegion
  7. ReDim ar(1 To UBound(arr))
  8. For i = 2 To UBound(arr)
  9.     p = ""
  10.     For j = 1 To UBound(arr, 2)
  11.         p = p & "," & arr(i, j)
  12.     Next
  13.     ar(i) = p
  14.     d(p) = i
  15. Next
  16. Application.ScreenUpdating = False
  17. For i = 2 To UBound(brr)
  18.     p = ""
  19.     For j = 1 To UBound(brr, 2)
  20.         p = p & "," & brr(i, j)
  21.     Next
  22.     d2(p) = i
  23.     If d.Exists(p) Then
  24.         Sheet2.Cells(i, 1).Resize(1, UBound(brr, 2)).Font.ColorIndex = 3
  25.     Else
  26.         Sheet2.Rows(i).Hidden = True
  27.     End If
  28. Next
  29. For i = 2 To UBound(ar)
  30.     If d2.Exists(ar(i)) Then
  31.         Sheet1.Cells(i, 1).Resize(1, UBound(arr, 2)).Font.ColorIndex = 3
  32.     Else
  33.         Sheet1.Rows(i).Hidden = True
  34.     End If
  35. Next
  36. Application.ScreenUpdating = True
  37. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
cunfu2010 + 3 很给力

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-5-20 10:35 | 显示全部楼层
dsmch 发表于 2016-5-19 23:18

谢谢,我也按把not去掉后,不行,现在你这个行了,不知道什么原因。谢谢啦!!!

For i = 2 To UBound(arr)
    p = ""
    For j = 1 To UBound(arr, 2)
       p = p & "," & arr(i, j)
    Next
    ar(i) = p
    d(p) = i
Next
这段代码中红色的如何理解,能否解释一下。


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 06:54 , Processed in 0.466094 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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