VBA 배열 중복 제거 후 재 할당하기

2018. 12. 7. 09:31VBA/배열활용

728x90
반응형




VBA에서 Collection을 이용한 중복제거 

  간단한 원리는 중복이 있는 배열을 반복하며 ","를 기준으로 합침 

  합친 후 Collection 객체를 이용하여 유니크한 항목만 추가

  다시 "," 기준으로 분리하여 중복이 제거 된 내용만 배열에 새 할당


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
Dim varSym As Variant
Dim vTemp As Variant
 
ReDim vTemp(LBound(varSym, 1To UBound(varSym, 1))
    For i = LBound(varSym) To UBound(varSym)
        vTemp(i) = varSym(i, 1& "," & varSym(i, 2& "," & varSym(i, 3& "," & varSym(i, 4)
    Next i
 
Dim c As Variant
Dim nC As New Collection
Dim szTemp
    For Each c In vTemp                 ' 배열의 반복
        On Error Resume Next
        nC.Add Item:=c, Key:=CStr(c)  ' Collection 개체로 유니크 한 항목 추가
        On Error GoTo 0
    Next c
            
ReDim varSym(1 To nC.Count, 1 To 4)   ' 다시 넣을 배열 사이즈 지정
        
    For i = LBound(varSym) To UBound(varSym)
        szTemp = Split(nC(i), ",")       ' string형 변수에 Collection 아이템을 Split 하여 넣음
        varSym(i, 1= szTemp(0)      ' Split 된 값들을 다시 배열에 순차적으로 넣어 줌
        varSym(i, 2= szTemp(1)
        varSym(i, 3= szTemp(2)
        varSym(i, 4= szTemp(3)
    Next i
cs



728x90
반응형