Excel:数组(Array)

一、概念

1.数组(Array)

数组就是一组相同类型的数据的有序集合,通过索引来访问数组中的各个元素。

2.集合(Collection)

Collection集合是我们在使用类时最常用到的对象。
一个Collection对象代表一组相关的项目。
集合是一组数据信息,存放于一个一维数组中,以便用户随时访问、增添、删除同类信息。
当你事先不知道要存放数据的个数,或者你需要一种比数组下标存取机制更灵活的方法时,你就需要用到集合类。

3.字典(Dictionary)

字典不是VBA内置的类型,VBA中的字典是微软Windows脚本语言中的一个很有用的对象,字典是由具有唯一性的关键字(Key)和它的项(Item)组成的集合,Key相当于字典中的每个字,具有不重复性,Item相当于对字典中每个字对应的解释。

小结:
通过概念来看,数组、字典和集合相同点都是存储一组数据,不同的是数组可以有一维数组、二维数组或者多维数组,集合和字典看起来就像一个一维数组,只不过集合里每个元素存储一个对象,字典里每个元素是存储一对值(Key和Item)。

二、声明语法

1.数组

a.静态数组。所谓静态数组,即它的长度是固定不可变的,在括号中注明数组的起始索引和结束索引即可,声明方法如下:

其中a、b、c、d均为数字,表示数据的索引起始值和末尾值。

也可以只写一个数字,则此时数组使用默认索引,从0开始,数字表示它的最大下标索引。如下图:

b.动态数组。如果在定义时并不知道需要使用的数组的长度是多少,则可以定义它为动态数组。定义动态数组,只需要在括号里面留空即可,如下图:

待确定了数组的长度之后,可以使用ReDim来重新定义数组,如下图:

三、使用

显示所有数组元素,以 ,间隔

Function display_array(arrays)
Dim result As String
result = ""
Dim array_len As Integer
array_len = UBound(arrays) + 1
For i = 0 To array_len - 1
    If result = "" Then
        result = arrays(i)
    Else
        result = result & "," & arrays(i)
    End If
Next

移除数组指定位置的元素

Function remove_index_in_array(arrays, index)
    Dim array_len As Integer
    array_len = UBound(arrays) + 1
    For i = index To array_len - 2
        arrays(i) = arrays(i + 1)
    Next
    If (array_len < 2) Then
        Exit Function
    End If
    ReDim Preserve arrays((array_len - 2))
    remove_index_in_array = arrays
End Function

向数组后追加一个值

Function insert_array_end(arrays, value)
    Dim array_len As Integer
    array_len = UBound(arrays) + 1
    ReDim Preserve arrays((array_len))
    arrays(array_len) = value
    insert_array_end = arrays
End Function

判断两个数组的是否一样(值与顺序军一样)

Function is_euqal(array_1, array_2)
    array_1_len = UBound(array_1) + 1
    array_2_len = UBound(array_2) + 1
    If (array_1_len <> array_2_len) Then
        is_euqal = False
        Exit Function
    Else
        For i = 0 To array_1_len - 1
            If (array_1(i) <> array_2(i)) Then
                is_euqal = fale
                Exit Function
            End If
        Next
    End If
    is_euqal = True
End Function

获取数组最后一个元素的值

Function get_array_last_value(arrays)
    Dim array_len As Integer
    array_len = UBound(arrays) + 1
    get_array_last_value = arrays(array_len - 1)
End Function

设置数组最后一个元素的值

Function set_array_last_value(arrays, value)
    Dim array_len As Integer
    array_len = UBound(arrays) + 1
    arrays(array_len - 1) = value
    set_array_last_value = arrays
End Function

借鉴:
https://zhuanlan.zhihu.com/p/44510653

原文地址:https://www.cnblogs.com/kutsu/p/14111840.html