ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1256|回复: 6

VBA如何同时实现多件查找

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-5-25 02:24 | 显示全部楼层 |阅读模式
下面的描术以工作表“筛选”为当前工作表。
A        说明:工作表“筛选”的C2的值为201902413和C3的值为500的意思是说在工作表“基本量”里查找的范围就是从201902413往上倒数加499行。总共500行含201902413本身               
                       
B         查找的条件是同时满足下面五个条件:假设查看下工作表“基本量”的C816:G816是否答合条件               
                第一,这里的E2的数值-G2的数值<=工作表“基本量”CELLS.(816,C).VALUE<=这里的E2的数值+G2的数值       
                第二,这里的E3的数值-G3的数值<=工作表“基本量”CELLS.(816,D).VALUE<=这里的E3的数值+G3的数值       
                第三,这里的E4的数值-G4的数值<=工作表“基本量”CELLS.(816,E).VALUE<=这里的E4的数值+G4的数值       
                第四,工作表“基本量”CELLS.(816,F).value=这里的E5的数值       
                第五,工作表“基本量”CELLS.(816,G).value=这里的E6的数值       
C        假设工作表“基本量”的C816:G816同时符合以上的五个条时,就把工作表“基本量”.cells(816,A).value=201902413复制到这里的I2               
        如果不符合,则继续往C815:G815查找,一直到上面说到的从C2这个数值所在的行往上倒数总共有C3这个数值的行       
   也就是说查找条件是在工作表“基本量”的C:G这个区域(符合工作表“筛选”C2和C3的行数规定),而要的数据是在工作表“基本量”的A列。       
D        如果在工作表“基本量”找到同时符合条件的A列数值超过100个,只需留下从C2这个值所在行开始倒数最近的100个即可,并复制到I2:I101这里       
        注意找数据时是从下往上找,找到了却是从上往下的顺序放到I2:I101里比如说找到第一个201902413放I2,找到第二个是201902405,就放到I3.如此类推。       

最后把这个程序写在“按钮1” 可以实现一键完成
菜鸟学做VBA,不知这样的表达是否清楚,还请各位大咖 高手帮忙 ,
万分感谢 !!!
不知道为什么不能上传EXCEL表
       

基本量工作表

基本量工作表

筛选工作表

筛选工作表

测试.rar

48.14 KB, 下载次数: 5

头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2019-5-25 09:50 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-25 17:05 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-5-25 20:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
试下看这个,结果只出来一个数据,不知道符不符全要求

测试.rar

57.13 KB, 下载次数: 14

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-26 16:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
4楼,xjl565135022 太帅了,这就是我想要的,太谢谢您了

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-26 16:55 | 显示全部楼层
xjl565135022 发表于 2019-5-25 20:51
试下看这个,结果只出来一个数据,不知道符不符全要求


4楼,xjl565135022 太帅了,这就是我想要的,太谢谢您了

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-2 20:46 | 显示全部楼层
为了让有碰到同样问题的朋友能学习,我把4楼帮我写的程序发出来。
Sub test()
Dim crr()
Set sht = Sheets("基本量")
Set sht1 = Sheets("筛选")
a = sht.[A65536].End(3).Row
arr = sht.Range("A1:G" & a)
brr = sht1.Range("A1:G6")
'获取 计算序数所在行
For i = 3 To a
    If arr(i, 1) = brr(2, 3) Then
        c = i
        Exit For
    End If
Next
If c >= brr(3, 3) Then
    For i = c To c - brr(3, 3) + 1 Step -1
        If arr(i, 3) >= brr(2, 5) - brr(2, 7) And arr(i, 3) <= brr(2, 5) + brr(2, 7) Then '条件1
            If arr(i, 4) >= brr(3, 5) - brr(3, 7) And arr(i, 4) <= brr(3, 5) + brr(3, 7) Then '条件2
                If arr(i, 5) >= brr(4, 5) - brr(4, 7) And arr(i, 5) <= brr(4, 5) + brr(4, 7) Then '条件3
                    If arr(i, 6) = brr(5, 5) Then '条件4
                        If arr(i, 7) = brr(6, 5) Then '条件5
                            If d < 99 Then
                                d = d + 1
                                ReDim Preserve crr(0, d - 1)
                                crr(0, d - 1) = arr(i, 1)
                            End If
                        End If
                    End If
                End If
            End If
        End If
    Next
    sht1.Range("I2").Resize(UBound(crr, 2) + 1, 1) = Application.Transpose(crr)
Else
    xx = MsgBox(brr(2, 3) & "前面的行数少于" & brr(3, 3) & "行", , "一个很温馨的提示!")
End If
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-25 07:54 , Processed in 0.049192 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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