ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 用VBA程序查找到满足横向、竖向多项条件的数据填充到单元格里

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-5-16 14:30 | 显示全部楼层 |阅读模式
请各位大师及大神们,请帮我用VBA程序解决难题。依据本表中已知几个条件在另一个数据表中查找符合条件的数据填充到本表。问题是要相符合数据表的横向二行字段,竖向为三列必需条件才能找到。谢谢。大师!大神!

00)求助-工程量计算23.05.16.xlsm.zip

69.5 KB, 下载次数: 19

TA的精华主题

TA的得分主题

发表于 2023-5-16 18:54 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-17 14:19 | 显示全部楼层
蓝桥玄霜 发表于 2023-5-16 18:54
另一个字典可自行扩展:

蓝桥玄霜老师您好,非常感谢您给我及时指导。我是初级水平,有的程序段想达到的用意及目的,作用看不明白,您能不能在每一行后加个简单的注明?谢谢。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-17 16:09 | 显示全部楼层
蓝桥玄霜 发表于 2023-5-16 18:54
另一个字典可自行扩展:

微信截图_20230517.jpg

老师,我试过了。我这边不知道什么原因,运行程序后没在相关位置上出现该有的数据。如上传图片。
微信截图_20230517.jpg

00)求助-工程量计算23.05.17.xlsm.zip

72.8 KB, 下载次数: 3

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-17 16:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
麻烦您了,老师。请您能不能检查一下,我上传的程序文件?哪里出问题了?

TA的精华主题

TA的得分主题

发表于 2023-5-18 09:49 | 显示全部楼层
抄错了一个字母:小写变成大写了
If ZJ <= 25 Then y = Arr1(i, 4) & "|" & "D<=25" Else y = Arr1(i, 4) & "|" & "D>25"
其中2个D 改为d   即可

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-18 15:19 | 显示全部楼层
老师您好:非常感谢您的及时的指导,程序正常运行了。下一步我想自己开展其它自动查找功能了,但是老师写的程序有的我看不明白,能不能在我发给您的程序文件中用*号标记的程序后面加个说明?特别是如下部分的较详细。我在网上查了半天也找不到类似的记录。
If d.exists(x) = False Then Set d(x) = CreateObject("Scripting.Dictionary")
     这和Set d= CreateObject("Scripting.Dictionary") 一样吗?
      d(x)(y) = Arr(i, j)*字典能用这种方式d(x)(y)=  来赋值?
SUB zd1求助.png
SUB 锚固长度求助.png

00)求助-工程量计算23.05.18.xlsm.zip

73.38 KB, 下载次数: 3

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-21 20:37 | 显示全部楼层
蓝桥玄霜老师您好:又麻烦您了,发给您我在程序下面加个说明的程序文件。能不能查看一下或更改我的说明即我对程序的理解深度。
我认为大部分大概看懂了,但是我还是不明白如下2个问题:
1)Set d = CreateObject("Scripting.Dictionary")与 Set d(x) = CreateObject("Scripting.Dictionary") 的区别。      d(x)(y) = Arr(i, j)与 Cells(i + 3, 18) = d(x)(y)中的d(x)(y)好像是字典,那么 d(x)是字典对象,(y)是关键字吗?还是一个是关键字,另一个是项?能不能指教一下这两个区别?这几天我看了您写的关于字典的资料,但是本人初级水平,不能完全看明白,再次求助您了。
2)If zj <= 25 Then y = Arr1(i, 4) & "|" & "d<=25" Else y = Arr1(i, 4) & "|" & "d>25"
         If d.exists(x) Then
   If d(x).exists(y) Then Cells(i + 3, 18) = d(x)(y): Cells(i + 3, 27) = d(x)(y)   
  End If
这里有三个If,但是只有一个End If。这样也可以吗?什么情况下不是一对一搭配也可以用?

00)求助-工程量计算23.05.21.xlsm.zip

74.46 KB, 下载次数: 5

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

本版积分规则

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

GMT+8, 2024-11-16 07:29 , Processed in 0.037068 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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