VBA 배열 중복 제거 후 재 할당하기
2018. 12. 7. 09:31ㆍVBA/배열활용
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, 1) To 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
반응형
'VBA > 배열활용' 카테고리의 다른 글
VBA 배열 내에서 날짜비교 최신날짜 가져오기 (MAX 미사용) (0) | 2020.04.13 |
---|---|
VBA 숫자 정렬, 버블정렬 1탄 (1) | 2020.01.08 |
VBA 배열과 Range의 속도차이! (0) | 2020.01.08 |
VBA Redim Preserve 하다보면 발생하는 오류 '형식이 맞지 않습니다.' (0) | 2020.01.08 |
이미 2행으로 입력 된 배열에 3행 추가 방법 (0) | 2018.12.07 |