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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM