Excel精英培训网

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

[已解决]VBA多条件(某一时间段)查找

[复制链接]
发表于 2017-1-10 19:33 | 显示全部楼层 |阅读模式
大家好!
有个问题想要大家帮助, 附件中想要用VBA查询某一时间段的牛号,牛号对应的有多个配种记录。
谢谢!
最佳答案
2017-1-10 21:53
  1. Sub Macro1()
  2. Dim arr, brr, crr, d, i&
  3. Set d = CreateObject("scripting.dictionary")
  4. arr = Sheet1.Range("a1").CurrentRegion
  5. Sheet2.Activate
  6. brr = Range("b8:b" & Range("b65536").End(xlUp).Row)
  7. ReDim crr(1 To UBound(brr), 1 To 1)
  8. d1 = [c5]: d2 = [c6]
  9. For i = 3 To UBound(arr)
  10.     If arr(i, 2) >= d1 And arr(i, 2) <= d2 Then d(arr(i, 1)) = ""
  11. Next
  12. For i = 1 To UBound(brr)
  13.     If d.exists(brr(i, 1)) Then crr(i, 1) = brr(i, 1)
  14. Next
  15. Range("c8").Resize(UBound(crr)) = crr
  16. End Sub
复制代码

VBA求助- 多条件查询.zip

93.05 KB, 下载次数: 41

发表于 2017-1-10 19:58 | 显示全部楼层
  1. Sub Macro1()
  2. Dim arr, brr, i&
  3. arr = Sheet1.Range("a1").CurrentRegion
  4. ReDim brr(1 To UBound(arr), 1 To 1)
  5. Sheet2.Activate
  6. d1 = [c5]: d2 = [c6]
  7. For i = 3 To UBound(arr)
  8.     If arr(i, 2) >= d1 And arr(i, 2) <= d2 Then
  9.         s = s + 1
  10.         brr(s, 1) = arr(i, 1)
  11.     End If
  12. Next
  13. [c8].Resize(UBound(arr)) = ""
  14. If s = 1 Then [c8] = brr(1, 1)
  15. If s > 1 Then Range("c8").Resize(s) = brr
  16. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2017-1-10 21:41 | 显示全部楼层
非常感谢您的帮助,但还是有些问题您在给指定一下。
下面是运行的结果
牛号 参配牛号
2082 151861
100296 141567
110383 141550
110385 121001
我想要查找的牛号对应的跟在B列牛号的后面,就像下面这样
牛号 参配牛号
2082
100296 100296
110383
110385 110385
回复

使用道具 举报

发表于 2017-1-10 21:53 | 显示全部楼层    本楼为最佳答案   
  1. Sub Macro1()
  2. Dim arr, brr, crr, d, i&
  3. Set d = CreateObject("scripting.dictionary")
  4. arr = Sheet1.Range("a1").CurrentRegion
  5. Sheet2.Activate
  6. brr = Range("b8:b" & Range("b65536").End(xlUp).Row)
  7. ReDim crr(1 To UBound(brr), 1 To 1)
  8. d1 = [c5]: d2 = [c6]
  9. For i = 3 To UBound(arr)
  10.     If arr(i, 2) >= d1 And arr(i, 2) <= d2 Then d(arr(i, 1)) = ""
  11. Next
  12. For i = 1 To UBound(brr)
  13.     If d.exists(brr(i, 1)) Then crr(i, 1) = brr(i, 1)
  14. Next
  15. Range("c8").Resize(UBound(crr)) = crr
  16. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2017-1-10 22:16 | 显示全部楼层
非常感谢您的帮助!
回复

使用道具 举报

 楼主| 发表于 2017-1-11 09:15 | 显示全部楼层
大侠,我想查找倒数第二条记录,不限制时间段了,不知道代码怎么写?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 22:50 , Processed in 0.331984 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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