Excel精英培训网

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

[已解决]跨表查找相同值并统计数量

[复制链接]
发表于 2016-11-30 13:38 | 显示全部楼层 |阅读模式
急求大神,一个工作簿里的两个工作表。sheet2第一列的数据,挨个去sheet1中查找,如果找到,就将sheet1和sheet2中的数据所在单元格都标红底,并在sheet2的第二列列出查找到的相同数值的量。如果没找到,则不标颜色,数量为空或者0都可以。详见附件
最佳答案
2016-11-30 14:34
  1. Sub test() '望帝春心
  2.     Dim rng As Range, rng1 As Range, cel As Range, cel1 As Range
  3.     Set rng = Sheet1.UsedRange
  4.     Set rng1 = Sheet2.Cells(2, 1).Resize(Sheet2.Cells(Rows.Count, 1).End(3).Row - 1)
  5.     For Each cel In rng1
  6.         For Each cel1 In rng
  7.             If cel.Value = cel1.Value Then
  8.                 n = n + 1
  9.                 cel.Interior.ColorIndex = 3
  10.                 cel1.Interior.ColorIndex = 3
  11.             End If
  12.         Next cel1
  13.         cel.Offset(, 1) = n
  14.         n = 0
  15.     Next cel
  16. End Sub
复制代码

求助.rar

7.3 KB, 下载次数: 11

发表于 2016-11-30 13:52 | 显示全部楼层
要返回數據 ,你就用VLOOKUP.直接返回.
要標示顏色.你就用條件格式去做.分兩步.
回复

使用道具 举报

 楼主| 发表于 2016-11-30 14:25 | 显示全部楼层
心正意诚身修 发表于 2016-11-30 13:52
要返回數據 ,你就用VLOOKUP.直接返回.
要標示顏色.你就用條件格式去做.分兩步.

本人不太懂VBA,求老师直接写出代码
回复

使用道具 举报

发表于 2016-11-30 14:34 | 显示全部楼层    本楼为最佳答案   
  1. Sub test() '望帝春心
  2.     Dim rng As Range, rng1 As Range, cel As Range, cel1 As Range
  3.     Set rng = Sheet1.UsedRange
  4.     Set rng1 = Sheet2.Cells(2, 1).Resize(Sheet2.Cells(Rows.Count, 1).End(3).Row - 1)
  5.     For Each cel In rng1
  6.         For Each cel1 In rng
  7.             If cel.Value = cel1.Value Then
  8.                 n = n + 1
  9.                 cel.Interior.ColorIndex = 3
  10.                 cel1.Interior.ColorIndex = 3
  11.             End If
  12.         Next cel1
  13.         cel.Offset(, 1) = n
  14.         n = 0
  15.     Next cel
  16. End Sub
复制代码

评分

参与人数 2 +7 收起 理由
苏子龙 + 6 来学习
xk2005 + 1 谢谢老师

查看全部评分

回复

使用道具 举报

发表于 2016-11-30 14:55 | 显示全部楼层
xk2005 发表于 2016-11-30 14:25
本人不太懂VBA,求老师直接写出代码

樓下有老師給你做出來了.
我也不懂VBA.不過一個簡單的引用函數和條件格式也是能做出來的.
回复

使用道具 举报

发表于 2016-11-30 15:00 | 显示全部楼层
  1. Sub tt()
  2.     Dim x As Range
  3.     Set d = CreateObject("scripting.dictionary")
  4.     With Sheet2
  5.         .UsedRange.Interior.ColorIndex = 0
  6.         arr = .[a1].CurrentRegion
  7.         For i = 2 To UBound(arr)
  8.             d(arr(i, 1)) = 0
  9.         Next
  10.         
  11.         With Sheet1
  12.             .UsedRange.Interior.ColorIndex = 0
  13.             For Each x In .UsedRange
  14.                 If Len(x) Then
  15.                     If d.exists(x.Value) Then
  16.                         xstr = xstr & "," & x.Address(0, 0)
  17.                         d(x.Value) = d(x.Value) + 1
  18.                     End If
  19.                 End If
  20.             Next
  21.             xstr = Mid(xstr, 2)
  22.             If xstr <> "" Then .Range(xstr).Interior.ColorIndex = 3
  23.         End With
  24.    
  25.         xstr = ""
  26.         For i = 2 To UBound(arr)
  27.             arr(i, 2) = d(arr(i, 1))
  28.             If arr(i, 2) > 0 Then xstr = xstr & "," & Cells(i, 2).Address(0, 0)
  29.         Next
  30.         .[a1].CurrentRegion = arr
  31.         xstr = Mid(xstr, 2)
  32.         If xstr <> "" Then .Range(xstr).Interior.ColorIndex = 3
  33.     End With
  34. End Sub
复制代码

求助.rar

16.69 KB, 下载次数: 13

评分

参与人数 2 +7 收起 理由
苏子龙 + 6 来学习
xk2005 + 1 谢谢您

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-11-30 15:03 | 显示全部楼层

完全满足我的要求,太感谢老师了
回复

使用道具 举报

发表于 2016-11-30 15:06 | 显示全部楼层
xk2005 发表于 2016-11-30 15:03
完全满足我的要求,太感谢老师了

哈哈,解决了还请评个最佳吧
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 05:35 , Processed in 0.421404 second(s), 18 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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