字典直接创建和引用法的区别

如图所示

以下是直接创建

Set d=Createobject(“scripting.dictionary”)

以下是用引用法,复制到别的电脑有可能不能用,必须启用

Private Sub CommandButton1_Click()
    Dim d As New dictionary
'前期引用,VBA中,工具,引用 scrrun.dll
'勾选 Microsoft Scripting runtime 
    Dim x As Long
    For x = 2 To 5
        d.Add Cells(x, 1).Value, Cells(x, 2).Value
    Next
    Range("d1").Resize(d.Count) = Application.Transpose(d.Keys)
    Range("e1").Resize(d.Count) = Application.Transpose(d.items)
End Sub

字典的4个属性

字典经典用法计数

字典的4个常用属性,d.key,d.item,d.count.d.comparemode使用方法如下

Private Sub CommandButton1_Click()
  Dim d                   '创建一个变量
    Set d = CreateObject("Scripting.Dictionary")
    d.Add "a", "Athens"     '添加一些关键字和条目
    d.Add "b", "Belgrade"
    d.Add "c", "Cairo"
      d.Key("a") = "d"
    If d.exists("d") Then
        MsgBox "存在"
    Else
        MsgBox "不存在"
    End If
End Sub
Private Sub CommandButton2_Click()
Dim d                   '创建一个变量
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "Athens"     '添加一些关键字和条目
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
    MsgBox d.Item("b")
End Sub
Private Sub CommandButton3_Click()
  Dim d                   '创建一个变量
  Set d = CreateObject("Scripting.Dictionary")
    d.Add "a", "Athens"     '添加一些关键字和条目
    d.Add "b", "Belgrade"
    d.Add "c", "Cairo"
    MsgBox d.Count
End Sub
Private Sub CommandButton4_Click()
  Dim d                   '创建一个变量
  Set d = CreateObject("Scripting.Dictionary")
    d.comparemode = 0 'VBTEXTCOMPARE 不区分大小写
    'vbbinarycompare 区分大小写 1
    d.Add "a", "Athens"     '添加一些关键字和条目
    d.Add "b", "Belgrade"
    d.Add "c", "Cairo"
    d.Add "A", "ABVCD"
End Sub

字典应用的六个方法

本文介绍字典中最常用的六个方法

Private Sub CommandButton1_Click()
Dim d                   '创建一个变量
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "Athens"     '添加一些关键字和条目
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
    If d.exists("a") = True Then
        MsgBox "存在"
    Else
        MsgBox "不存在"
    End If
End Sub
Private Sub CommandButton2_Click()
    Dim d                   '创建一个变量
    Set d = CreateObject("Scripting.Dictionary")
    d.Add "a", "Athens"     '添加一些关键字和条目
    d.Add "b", "Belgrade"
    d.Add "c", "Cairo"
        k = d.keys
        [a1].Resize(d.Count, 1) = Application.Transpose(k)
End Sub
Private Sub CommandButton3_Click()
    Dim d                   '创建一个变量
    Set d = CreateObject("Scripting.Dictionary")
    d.Add "a", "Athens"     '添加一些关键字和条目
    d.Add "b", "Belgrade"
    d.Add "c", "Cairo"
        k = d.items
        [b1].Resize(d.Count, 1) = Application.Transpose(k)
End Sub
Private Sub CommandButton4_Click()
Dim d                   '创建一个变量
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "Athens"     '添加一些关键字和条目
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
    d.Remove ("a")
    If d.exists("a") = True Then
        MsgBox "存在"
    Else
        MsgBox "不存在"
    End If
End Sub
Private Sub CommandButton5_Click()
Dim d                   '创建一个变量
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "Athens"     '添加一些关键字和条目
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
    d.RemoveAll
    If d.exists("b") = True Then
        MsgBox "存在"
    Else
        MsgBox "不存在"
    End If
End Sub

字典基本用法

优点1:字典第一列只能装非重复的值,可以用来提取不重复的元素,用数组不方便

优点2:每一个KEY对应唯一的ITEM,数组按序号不太方便

缺点1:只有两列,处理多列需要用字符串组合拆分来实现

缺点2:会需要一定的时间调用

字典有六个方法:

d.add
d.exists
d.keys
d.items
d.remove
d.removeall

字典有四个属性:

key
item
count
comparemode

创建字典两种方法

直接创建: Set d=createobject(“scripting dictionary”)

引用法:工具,引用,浏览  SCRRUN.DLL

 

 

 

插入排序的方法

插入排序的方法

如下图所示,需要对A列重新排序,使用的原理是,从第二个开始,都要和上面的比较,如果遇到大的,大的下沉一位,然后和当前X的值进行对调。

Option Explicit
Sub Test()
    Dim arr, temp, x, y  '声明变量 
        arr = Range("a1:a10")
        For x = 2 To UBound(arr) '从第二个开始
                temp = arr(x, 1) '记得要插入的值
            For y = x - 1 To 1 Step -1
                If arr(y, 1) <= temp Then Exit For
                arr(y + 1, 1) = arr(y, 1)
            Next y
            arr(y + 1, 1) = temp
        Next
    Range("d1").Resize(UBound(arr)) = arr
End Sub