1. 程式人生 > 實用技巧 >VBA | 統計陣列某元素出現的次數,適用於一維、二維陣列

VBA | 統計陣列某元素出現的次數,適用於一維、二維陣列

很簡單的需求,但是中文網路上基本都是迴圈的方法,經過查詢下面的方法很有效。為了方便使用者的使用,進行了如下的整改。

1 Sub Statistics_Number_of_occurrences_test()
2 MyArray = Array("1", 23, 3, "1")
3 MsgBox Application.count(Application.Match(MyArray, Array("1"), 0)) '統計字串"1"的出現次數,返回2
4 End Sub

為了便於使用,寫成函式,使用者可以呼叫該函式Statistics_Number_of_occurrences(s, arr)

直接使用。

1 Function Statistics_Number_of_occurrences(s As Variant, arr As Variant) As Integer
2     '------------適用於一維陣列、二維陣列----------
3     '------------部落格園:IssacNew------------------
4     '----https://www.cnblogs.com/issacnew/---------
5     Statistics_Number_of_occurrences = Application.count(Application.Match(arr, Array(s), 0
)) 6 End Function

1 '------使用例子-----
2 Sub test()
3     Dim s, arr1, arr2
4     s = 1
5     arr1 = Array(1, 2, 3, 3, 2, 1) '一維陣列
6     arr2 = Array(Array(1, 2, 3, 1, 2, 1), Array(1, 2, 3, 3, 2, 1))
7     MsgBox Statistics_Number_of_occurrences(s, arr1) '一維陣列,統計1出現的個數,返回3
8     MsgBox Statistics_Number_of_occurrences(s, arr2) '
一維陣列,統計1出現的個數,返回5 9 End Sub

參考資料:

01.https://www.mrexcel.com/board/threads/countif-for-vba-array-without-a-loop.739653/#post3635486

02. https://stackoverflow.com/questions/45367671/vba-array-countif