Excel精英培训网

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

[已解决]请教老师:查找两个数组中,有相同指定个数的行

[复制链接]
发表于 2022-12-3 11:06 | 显示全部楼层 |阅读模式
3学分
请教各位老师:
说明:
        如果“原始数据1”中,某行正好有“A2”个数据,与“原始数据2”中的某行完全相同(不看数据的位置,只要有就行),就将“原始数据1”中的这行,提取到此“结果”表D列开始的地方,要带序号。并且把“原始数据2”与之对应的序号,放在此行隔1个单元格的后面,有几个放几个。
        所谓“正好”,是指多一个、少一个都不行
        比如:A2=6,假如“原始数据1”中,序号为1的那行,正好有6个数据与“原始数据2”中的序号为10的那行完全相同(不看数据的位置,只要有就行),就将“原始数据1”序号为1的那行,放到“结果”表的D1,并且把“原始数据2”与之对应的序号,放在此行L1的后面,有几个放几个。以此类推。
        再比如:A2=4,假如“原始数据1”中,序号为2的那行,有5个数据与“原始数据2”中的序号为11的那行完全相同(不看数据的位置,只要有就行), 那么,“原始数据1”中,序号为2的那行,不能被选上。因为,它不是正好有4个相同数据。

具体例子请见: 查找两个数组的相同行.rar (19.73 KB, 下载次数: 6)

最佳答案

查看完整内容

Sub demo() Set d = CreateObject("scripting.dictionary") a = Sheet1.[a1].CurrentRegion b = Sheet2.[a1].CurrentRegion cnt = [a2] Sheet3.UsedRange.Offset(, 1).ClearContents For i = 1 To UBound(a) d.RemoveAll: s = a(i, 1) & "," For k = 2 To 7 d(a(i, k)) = 1: s = s & a(i, k) & "," Next n = 0 For j = 1 To UBound(b) c = 0 ...
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2022-12-3 11:06 | 显示全部楼层    本楼为最佳答案   
Sub demo()
   Set d = CreateObject("scripting.dictionary")
   a = Sheet1.[a1].CurrentRegion
   b = Sheet2.[a1].CurrentRegion
   cnt = [a2]
   Sheet3.UsedRange.Offset(, 1).ClearContents
   For i = 1 To UBound(a)
      d.RemoveAll: s = a(i, 1) & ","
      For k = 2 To 7
         d(a(i, k)) = 1: s = s & a(i, k) & ","
      Next
      n = 0
      For j = 1 To UBound(b)
         c = 0
         For k = 2 To 7
            If d(b(j, k)) Then c = c + 1
         Next
         If c = cnt Then s = s & "," & b(j, 1): n = n + 1
      Next
      If n Then [d1].Offset(r).Resize(, n + 8) = Split(s, ","): r = r + 1
   Next
End Sub

祝順心,南無阿彌陀佛!

demo.zip

31.35 KB, 下载次数: 6

评分

参与人数 1学分 +2 收起 理由
lygyjt + 2

查看全部评分

回复

使用道具 举报

发表于 2022-12-7 14:36 | 显示全部楼层
没有认真测试,使用情况请反馈

查找两个数组的相同行.rar

31.14 KB, 下载次数: 8

评分

参与人数 2学分 +4 收起 理由
lygyjt + 2
cutecpu + 2

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2022-12-8 10:29 | 显示全部楼层
qdtzq 发表于 2022-12-7 14:36
没有认真测试,使用情况请反馈

谢谢qdtzq老师的指教!结果完全正确。刚想给您最佳,另外一个帖子上来了,格式更规整些。请您见谅啊!下次还希望能得到您的指教。
回复

使用道具 举报

 楼主| 发表于 2022-12-8 10:37 | 显示全部楼层
cutecpu 发表于 2022-12-3 11:06
Sub demo()
   Set d = CreateObject("scripting.dictionary")
   a = Sheet1.[a1].CurrentRegion

再次谢谢版主大人的仁爱之心!能得到您多次帮助,不胜荣幸!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 08:08 , Processed in 0.395639 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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