ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何使用数组及字典查询另外一个表对于的列放在本表对应列中?

如何使用数组及字典查询另外一个表对于的列放在本表对应列中?

作者:绿色风 分类: 时间:2022-08-17 浏览:73
楼主
wise
Q:如何使用数组及字典查询另外一个表对于的列放在本表对应列中?
即根据本表的第1\2列把"1号工作量"表的工作量数据放入本表D列的相应位置中。
A:ALT+F11→打开VBE窗口→插入模块,在模块输入以下代码:
  1. Sub test()
  2. Dim i&, j&, Myr1&, Arr1, Myr2&, Arr2
  3. Dim d, k, t, x
  4. Set d = CreateObject("Scripting.Dictionary")
  5. Application.ScreenUpdating = False
  6.   Myr1 = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
  7.   Arr1 = Sheet1.Range("A2:D" & Myr1)
  8.   Myr2 = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row
  9.   Arr2 = Sheet2.Range("A2:D" & Myr2)
  10. For i = 1 To UBound(Arr1)
  11.   x = Arr1(i, 1) & "," & Arr1(i, 2)
  12.   '把新组成的值赋予给x
  13.   d(x) = Arr1(i, 3)
  14.   '往字典添加x值,其item值为工作量
  15. Next i
  16.   k = d.keys
  17.   '把keys值赋予给k
  18.   t = d.items
  19.   '把items值赋予给t
  20. For i = 1 To UBound(Arr2)
  21. '循环数组Arr2
  22.   x = Arr2(i, 1) & "," & Arr2(i, 2)
  23.   For j = 0 To UBound(k)
  24.   '循环k
  25.     If x = k(j) Then Arr2(i, 4) = t(j): Exit For
  26.     '如果x值等于k数组中的值,则把相对应的工作量赋予给数组的第四列,并停止循环
  27. Next j
  28. Next
  29. Sheet2.Range("D2").Resize(UBound(Arr2), 1) = Application.Index(Arr2, 0, 4)
  30. End Sub


字典+数组查询.rar
2楼
MMonica605
如果不懂代码肿么办捏?

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap