• 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

  • 相关阅读:
    Excel透视表进阶之计算字段、计算项、切片器、页面布局
    Excel透视表进阶之排序、筛选、分组、总计与分类汇总
    Excel透视表基础之字段布局与重命名、更新、数字格式设置、空值与错误值、
    Excel透视表基础之数据源、创建、基本术语、基本操作
    NumPy基础
    Python读写Excel
    逻辑判断
    打印 PRINT
    面向对象
    循环控制
  • 原文地址:https://www.cnblogs.com/kutsu/p/14111840.html
Copyright © 2020-2023  润新知