ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 用VBA实现日期段按单个条件查找某一列数据返回到其他工作表指定单元格区域内

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-6-1 21:42 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 雷雷爸 于 2023-6-2 22:30 编辑

各位大神老师,目前这个工作簿在shiruiqiang老师的帮助下,基本上已经满足使用要求了,就是还有一点点不足的地方,就是超过返回的最大数据后,代码会报错,提示下标越界,如果能有提示框提示就好了,目前最多可以返回填充240个数据,因为表格最多可以填充248个,我想改成248个,还有就是两张工作表无法加密保护了,请问其他老师还有办法帮忙解决一下吗,万分感谢。
c86d06c56c538805af8cd75e4b3e39f.png
0caa60be191d48b3f30506ef5d32632.png

强度评定.rar

193.03 KB, 下载次数: 6

TA的精华主题

TA的得分主题

发表于 2023-6-2 08:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
查询条件是日期和强度等级,但是,
1、数据源中有三列是日期,究竟要根据哪一列的日期来查询?
2、目前数据源表的I列都是些错误值符号,
3、但是最多只能填充248个数据,如果超出的话,有没有办法解决或者提示等等,是什么意思??

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-2 11:35 | 显示全部楼层
3190496160 发表于 2023-6-2 08:36
查询条件是日期和强度等级,但是,
1、数据源中有三列是日期,究竟要根据哪一列的日期来查询?
2、目前数 ...

老师是根据工作表[试块强度输入]B列日期,不好意思之前没有表述清楚

TA的精华主题

TA的得分主题

发表于 2023-6-2 11:52 | 显示全部楼层
雷雷爸 发表于 2023-6-2 11:35
老师是根据工作表[试块强度输入]B列日期,不好意思之前没有表述清楚

真心求助就好好整理一下你的文件在上传呗,目前数据源表的I列都是些错误值符号,都没法测试代码的呀

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-2 13:01 | 显示全部楼层
3190496160 发表于 2023-6-2 11:52
真心求助就好好整理一下你的文件在上传呗,目前数据源表的I列都是些错误值符号,都没法测试代码的呀

不好意思老师,我是小白,之前这个表格I列计算引用了一个vba自定义函数,我忘了删除了,现在应该可以看到了

TA的精华主题

TA的得分主题

发表于 2023-6-2 13:18 | 显示全部楼层
表2的日期列cdate >=cdate(开始日期) and 日期列cdate <=cdate(结束日期)
表2的k列的值=强度等级选择
提取i列的值  
假如 i列的值<>""的话
n=n+1
brr(n\8,n mod 8)
如果n>248 提示后退出。
表有问题,以上解题思路

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-2 13:26 | 显示全部楼层
shiruiqiang 发表于 2023-6-2 13:18
表2的日期列cdate >=cdate(开始日期) and 日期列cdate 248 提示后退出。
表有问题,以上解题思路

老师我表重新弄了一下,能帮忙写段代码吗?我是VBA小白

TA的精华主题

TA的得分主题

发表于 2023-6-2 13:30 来自手机 | 显示全部楼层
先记号一下。没别的老师的话,要傍晚有空才行

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-2 13:45 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
shiruiqiang 发表于 2023-6-2 13:30
先记号一下。没别的老师的话,要傍晚有空才行

好的谢谢老师,我加了两个图片,根据日期范围和强度等级两个条件

TA的精华主题

TA的得分主题

发表于 2023-6-2 14:59 | 显示全部楼层
Sub tiqu()
Dim x, m, n, j
Dim arr, brr(1 To 30, 1 To 8)
Dim starday, endday, qd
starday = Sheets("抗压强度评定").[o3]
endday = Sheets("抗压强度评定").[o4]
qd = Sheets("抗压强度评定").[p4]
arr = Sheets("试块强度输入").[a1].CurrentRegion
For x = 2 To UBound(arr)
If CDate(arr(x, 2)) >= CDate(starday) And CDate(arr(x, 2)) <= CDate(endday) Then
If arr(x, 11) = qd Then
If arr(x, 8) <> "" Then
n = n + 1
If n Mod 8 = 0 Then
j = (n \ 8)
m = 8
Else
j = (n \ 8) + 1
m = n Mod 8
End If
brr(j, m) = arr(x, 8)
End If
End If
End If
Next


Sheets("抗压强度评定").[e5:l35].ClearContents
If n > 240 Then
MsgBox "提取到符合的数值共:" & n & "个&#184;超出限定数量240个!"
Exit Sub
Else
Sheets("抗压强度评定").[e5].Resize(j, 8) = brr
End If



End Sub

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

本版积分规则

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

GMT+8, 2024-11-16 09:34 , Processed in 0.038054 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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