DeleteSameValue
Summary
配列内の重複した値を削除するための関数です。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 | Function DeleteSameValue(arr As Variant) As Variant
'配列内の重複を削除する。
'
'Parameters
'------
'- arr:Variant
'対象となる配列
Dim dic As Object '重複を除いた値を格納する
Dim i, j 'ループカウンタ
Dim iLen '配列要素数
Dim arrEdit() As Variant '編集後の配列
'__init__
Set dic = CreateObject("Scripting.Dictionary")
ReDim arrEdit(0)
iLen = UBound(arr)
'__main__
For i = 0 To iLen
'配列に未登録の場合
If (dic.Exists(arr(i)) = False) Then
Call dic.Add(arr(i), arr(i)) '追加
'重複がない値のみ編集後の配列に格納する
arrEdit(UBound(arrEdit)) = arr(i)
ReDim Preserve arrEdit(UBound(arrEdit) + 1)
Else
End If
Next
'配列に格納済みの場合
If IsEmpty(arrEdit(0)) = False Then
'余分な領域を削除
ReDim Preserve arrEdit(UBound(arrEdit) - 1)
End If
DeleteSameValue = arrEdit
End Function
|
説明
この関数は、渡された配列 arr 内の重複した値を削除するために使用されます。 関数は、Scripting.Dictionary オブジェクトを使用して、重複を除いた値を格納します。
配列の要素を順番に走査し、配列に未登録の場合は辞書に値を追加し、編集後の配列 arrEdit に格納します。
重複した値はスキップされます。
最後に、arrEdit の要素数を調整し、重複を削除した配列が戻り値として返されます。
引数
戻り値
- 戻り値の型: Variant型 (重複を削除した配列)
Examples
列内の重複した値を削除する方法が示されています。
元の配列 originalArray に対して DeleteSameValue 関数を適用し、重複を削除した配列 uniqueArray を取得します
| ' 配列内の重複した値を削除する
Dim originalArray() As Variant
originalArray = Array(1, 2, 3, 2, 4, 5, 1, 3)
Dim uniqueArray() As Variant
uniqueArray = DeleteSameValue(originalArray)
|