Excel精英培训网

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

求助:vba字典法代替VLOOKUP函数多列(有间隔)引用?

[复制链接]
发表于 2017-2-15 14:57 | 显示全部楼层 |阅读模式
   求助:vba字典法代替VLOOKUP函数多列(有间隔)引用?
搜索论坛,有单列,而本表涉及多列,有间隔,请求用vba字典法帮写个程序!模拟数据已描红!

图片1.png

求助:vba字典法代替VLOOKUP函数多列(有间隔)引用?.rar

13.52 KB, 下载次数: 40

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-2-15 15:55 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2017-2-15 16:42 | 显示全部楼层
回复

使用道具 举报

发表于 2017-2-17 09:16 | 显示全部楼层
再来顶你一次
回复

使用道具 举报

发表于 2017-2-17 09:38 | 显示全部楼层
wps没用过
在E中用字典可以这样:把产品信息表读进数组A中,用字典记录其每个产品名称在数组A中的位置。要用的时候再根据这个位置去取相应的值就可以了。即字典与数组连起来用,字典的基本使用方法
回复

使用道具 举报

发表于 2022-2-14 18:53 | 显示全部楼层
继续帮你顶 看看哪位老师能帮忙谢谢
回复

使用道具 举报

发表于 2022-2-17 17:08 | 显示全部楼层
您好~~~我也是初学者,不知道我做的vba能不能满足您的需求

求助:vba字典法代替VLOOKUP函数多列(有间隔)引用?.rar

132 Bytes, 下载次数: 7

回复

使用道具 举报

发表于 2022-2-17 17:09 | 显示全部楼层
本帖最后由 superboy_713 于 2022-2-17 17:13 编辑
superboy_713 发表于 2022-2-17 17:08
您好~~~我也是初学者,不知道我做的vba能不能满足您的需求

我把您以前的公式删掉了~~~可以先点击清除按钮,然后在下拉菜单中找到您需要的产品,最后点击提取按钮~~~

哇~~2017年的帖子,5年后的今天我试着来回答一次~~~估计早就不赶趟了~~~~全当我练习一下吧~~~~
回复

使用道具 举报

发表于 2022-2-17 17:17 | 显示全部楼层
我用的不是字典法~~~~字典是一个key值对应一个item,那么多列就得创建多个字典,我用的是vba的For each遍历所有单元格,找到相同的单元格后,提取到他的行数,然后再把对应的数据提取过来~~~~
回复

使用道具 举报

发表于 2022-2-17 18:56 | 显示全部楼层
  1. Sub 字典法()
  2. Dim d As Object, d1 As Object, d2 As Object, d3 As Object
  3. Dim arr, brr, i As Integer, j As Integer
  4. Set d = CreateObject("scripting.dictionary")
  5. Set d1 = CreateObject("scripting.dictionary")
  6. Set d2 = CreateObject("scripting.dictionary")
  7. Set d3 = CreateObject("scripting.dictionary")
  8. arr = Sheet2.Range("b3:f49")
  9. brr = Sheet1.Range("a3:a15")
  10. For i = 1 To UBound(brr)
  11.     d(brr(i, 1)) = ""
  12. Next i
  13. Dim srr
  14.     srr = d.keys
  15.     For i = 1 To UBound(arr)
  16.         For j = 0 To UBound(srr)
  17.             If arr(i, 1) = srr(j) Then
  18.                 d1(arr(i, 1)) = arr(i, 2)
  19.                 d2(arr(i, 1)) = arr(i, 4)
  20.                 d3(arr(i, 1)) = arr(i, 5)
  21.                 Exit For
  22.             End If
  23.         Next j
  24.     Next i
  25.         For i = 1 To UBound(brr)
  26.             Cells(i + 2, "b") = d1(brr(i, 1))
  27.             Cells(i + 2, "c") = d2(brr(i, 1))
  28.             Cells(i + 2, "e") = d3(brr(i, 1))
  29.         Next i
  30.         Set d1 = Nothing
  31.         Set d2 = Nothing
  32.         Set d3 = Nothing
  33. End Sub
复制代码
字典法如上,是不是要这样?

求助:vba字典法代替VLOOKUP函数多列(有间隔)引用?.rar

23.69 KB, 下载次数: 11

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 17:05 , Processed in 0.608135 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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