Excel精英培训网

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

[已解决]类似VLOOKUP的功能

[复制链接]
发表于 2012-12-12 13:36 | 显示全部楼层 |阅读模式
本帖最后由 X.Z. 于 2012-12-12 14:17 编辑

希望达到类似VLOOKUP功能
可以由ALL这张表的 A栏第三码或是前面三码
搜寻LIST这张表D栏.. 对应的B栏名称至M栏
谢谢

0.png
1.png
最佳答案
2012-12-12 14:13
  1. Sub 提取Name()
  2.     Dim arr, i&
  3.     Dim dic As Object
  4.    
  5.     Set dic = CreateObject("scripting.dictionary")
  6.     With Worksheets("List")
  7.         arr = .Range("a1").CurrentRegion
  8.         For i = LBound(arr) + 1 To UBound(arr)
  9.             If Len(arr(i, 4)) > 0 Then dic(Split(arr(i, 4), ".")(2)) = arr(i, 2)
  10.         Next
  11.     End With
  12.    
  13.     With Worksheets("ALL")
  14.         Dim arrb()
  15.         arr = .Range("a1").CurrentRegion
  16.         i = UBound(arr)
  17.         ReDim arrb(1 To i, 1 To 1)
  18.         For i = LBound(arr) + 1 To UBound(arr)
  19.             If Len(arr(i, 1)) > 0 Then arrb(i, 1) = dic(Split(arr(i, 1), ".")(2))
  20.         Next
  21.         Range("m:m").ClearContents
  22.         Range("m1").Resize(UBound(arrb), 1) = arrb

  23.     End With
  24.         
  25. End Sub
复制代码

test1.zip

29.62 KB, 下载次数: 21

发表于 2012-12-12 14:13 | 显示全部楼层    本楼为最佳答案   
  1. Sub 提取Name()
  2.     Dim arr, i&
  3.     Dim dic As Object
  4.    
  5.     Set dic = CreateObject("scripting.dictionary")
  6.     With Worksheets("List")
  7.         arr = .Range("a1").CurrentRegion
  8.         For i = LBound(arr) + 1 To UBound(arr)
  9.             If Len(arr(i, 4)) > 0 Then dic(Split(arr(i, 4), ".")(2)) = arr(i, 2)
  10.         Next
  11.     End With
  12.    
  13.     With Worksheets("ALL")
  14.         Dim arrb()
  15.         arr = .Range("a1").CurrentRegion
  16.         i = UBound(arr)
  17.         ReDim arrb(1 To i, 1 To 1)
  18.         For i = LBound(arr) + 1 To UBound(arr)
  19.             If Len(arr(i, 1)) > 0 Then arrb(i, 1) = dic(Split(arr(i, 1), ".")(2))
  20.         Next
  21.         Range("m:m").ClearContents
  22.         Range("m1").Resize(UBound(arrb), 1) = arrb

  23.     End With
  24.         
  25. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
X.Z. + 1 感謝! 可以達到需求

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2012-12-12 14:16 | 显示全部楼层
hwc2ycy 发表于 2012-12-12 14:13

帥啊!
比想像中的 還要長!!!
需求有達到
感謝您 迅速回答
我來研究看看 代碼!!




回复

使用道具 举报

发表于 2012-12-12 14:19 | 显示全部楼层
代码其实不需要嫌长,只要写好了就成,这个不像写公式,不需要去追求那么短。
回复

使用道具 举报

 楼主| 发表于 2012-12-12 15:29 | 显示全部楼层
hwc2ycy 发表于 2012-12-12 14:19
代码其实不需要嫌长,只要写好了就成,这个不像写公式,不需要去追求那么短。

了解!! 感謝指導!!
回复

使用道具 举报

 楼主| 发表于 2012-12-12 22:44 | 显示全部楼层
本帖最后由 X.Z. 于 2012-12-12 22:50 编辑

對不起!如果可以的話抽空.幫我修改一下 把資料直接寫入到指定SHEET內,
而不是到 目前ACTICE的SHEET 謝謝您!!!

找到原因了
少了個.

   
    With Worksheets("All_Data")
        Dim arrb()
        arr = .Range("a1").CurrentRegion
        i3 = UBound(arr)
        ReDim arrb(1 To i3, 1 To 1)
        For i3 = LBound(arr) + 1 To UBound(arr)
            If Len(arr(i3, 1)) > 0 Then arrb(i3, 1) = dic(Split(arr(i3, 1), ".")(2))
        Next
        '.Range("m:m").ClearContents
        .Range("m1").Resize(UBound(arrb), 1) = arrb

     End With
'End Sub
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 17:31 , Processed in 0.814237 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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