Excel精英培训网

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

跟着校长学VBA之第27集:VBA字典1

[复制链接]
发表于 2013-1-18 23:35 | 显示全部楼层 |阅读模式
本帖最后由 hwc2ycy 于 2013-1-18 23:36 编辑

一、字典的概念
1 什么是VBA字典?
   字典(dictionary)是一个储存数据的小仓库。共有两列。
      第一列叫key , 不允许有重复的元素。
      第二列是item,每一个key对应一个item,本列允许为重复
            Key       item
             A        10
             B        20
             C        30
             Z        10

2 即然有数组,为什么还要学字典?
   原因:提速,具体表现在
      1) A列只能装入非重复的元素,利用这个特点可以很方便的提取不重复的值
      2) 每一个key对应一个唯一的item,只要指点key的值,就可以马上返回其对应的item,利用字典可以实现快速的查找

3 字典有什么局限?
    字典只有两列,如果要处理多列的数据,还需要通过字符串的组合和拆分来实现。
    字典调用会耗费一定时间,如果是数据量不大,字典的优势就无法体现出来。
   
4 字典在哪里?如何创建字典?
    字典是由scrrun.dll链接库提供的,要调用字典有两种方法
      第一种方法:直接创建法
        Set d = CreateObject("scripting.dictionary")
      第二种方法:引用法
        工具-引用-浏览-找到scrrun.dll-确定

二、字典的使用
  1. Option Explicit

  2. '1 装入数据
  3. Sub t1()
  4.     Dim d As New Dictionary
  5.     Dim x As Integer
  6.     For x = 2 To 4
  7.         d.Add Cells(x, 1).Value, Cells(x, 2).Value
  8.     Next x
  9.     MsgBox d.Keys(1)
  10.     'Stop
  11. End Sub
  12. '2 读取数据
  13. Sub t2()
  14.     Dim d
  15.     Dim arr
  16.     Dim x As Integer
  17.     Set d = CreateObject("scripting.dictionary")
  18.     For x = 2 To 4
  19.         d.Add Cells(x, 1).Value, Cells(x, 2).Value
  20.     Next x
  21.     'MsgBox d("李四")
  22.     'MsgBox d.Keys(2)
  23.     Range("d1").Resize(d.Count) = Application.Transpose(d.Keys)
  24.     Range("e1").Resize(d.Count) = Application.Transpose(d.Items)
  25.     arr = d.Items
  26. End Sub

  27. '3 修改数据
  28. Sub t3()
  29.     Dim d As New Dictionary
  30.     Dim x As Integer
  31.     For x = 2 To 4
  32.         d.Add Cells(x, 1).Value, Cells(x, 2).Value
  33.     Next x
  34.     d("李四") = 78
  35.     MsgBox d("李四")
  36.     d("赵六") = 100
  37.     MsgBox d("赵六")
  38. End Sub

  39. '4 删除数据
  40. Sub t4()
  41.     Dim d As New Dictionary
  42.     Dim x As Integer
  43.     For x = 2 To 4
  44.         d(Cells(x, 1).Value) = Cells(x, 2).Value
  45.     Next x
  46.     d.Remove "李四"
  47.     ' MsgBox d.Exists("李四")
  48.     d.RemoveAll
  49.     MsgBox d.Count
  50. End Sub

  51. '区分大小写
  52. Sub t5()
  53.     Dim d As New Dictionary
  54.     Dim x
  55.     For x = 1 To 5
  56.         d(Cells(x, 1).Value) = ""
  57.     Next x
  58.     Stop
  59. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-1-19 08:13 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 12:53 , Processed in 0.335472 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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