엑셀 VBA
Collection을 활용한 중복 제거
1. Collection 객체
중복 제거를 할 때 가장 유용한 객체는 Collection 입니다. Collection의 경우 각 값에 고유 key 값을 부여 하기 때문에
중복 key 값이 들어 올 경우 자동으로 중복된 내용을 제거해 주는 기능을 하고 있습니다.
Sub collection_method()
Dim newCol As Collection 'Collction 선언
Set newCol = New Collection '새로운 Collection할당
newCol.Add Item, Key 'add사용 (추가)
strCol = newCol.Item(Index) '해당index 값 반환
intCnt = newCol.Count 'collection 갯수 반환
newCol.Remove 1 '해당index 제거\
End Sub
2. Colletion을 이용한 중복 제거
배열을 이용한 중복 제거는 배열을 재지정 해야 하기 때문에 복잡한 부분이 많다. 하지만 collecion 을 이용하면 key 값을 이용해서 쉽게 중복제거 및 중복값들의 합계를 쉽게 계산할 수 있다
Sub remove_deplicate_useCollection()
Dim newCol As Collection '컬렉션 선언
Dim imsi1 As Integer, imsi2 As Integer '임시 데이터 받을 변수
Dim i As Integer '순환문용 변수
Set newCol = New Collection '컬렉션 생성
On Error Resume Next '에러가 발생해도 코드 진행
For i = 1 To Cells(Rows.Count, 1).End(3).Row
newCol.Add Array(Cells(i, 1), Cells(i, 2), Cells(i, 3)), Cells(i, 1) '컬렉션에 데이터 삽입
If Err.Number <> 0 Then '에러가발생하면
imsi1 = newCol.Item(Cells(i, 1))(1) '두번째 항목을 임시변수에 저장
imsi2 = newCol.Item(Cells(i, 1))(2) '세번째 항목을 임시변수에 저장
newCol.Remove Cells(i, 1) ' 해당 키 값을 제거
newCol.Add Array(Cells(i, 1), Cells(i, 2) + imsi1, Cells(i, 3) + imsi2), Cells(i, 1) '새로운 컬렉션 항목 추가
Err.Clear '에러 제거
End If
Next i
'========컬렉션 데이터 출력============
For i = 1 To newCol.Count ' 컬렉션 전체 순환
Cells(i, "e") = newCol(i)(0) '첫번째 항목 표시
Cells(i, "f") = newCol(i)(1) '두번째 항목 표시
Cells(i, "g") = newCol(i)(2) '세번째 항목 표시
Next i
MsgBox "완료"
End Sub
3. 실행 영상
4. Collection의 장점
- 배열의 경우 한번 정한 크기를 변경하기 어렵다. 배열의 크기를 변경하는 방법이 없지는 않지만 이런 부분에 있어서는 Collection 이 훨씬 편하게 이용할 수 있다.
5. Collection의 단점
- Collection은 읽기 전용이기 때문에 한번 할당된 데이터를 변경할 수 없다. 데이터를 변경하기 위해서는 해당 값을 삭제하고 다시 할당을 해야 한다.
'엑셀VBA > VBA 기본' 카테고리의 다른 글
VBA Range 객체: 엑셀 데이터를 다루는 가장 강력한 도구 (0) | 2025.01.24 |
---|---|
엑셀 매크로 VBA - FOR 문 사용 (0) | 2025.01.22 |
엑셀 VBA Find 함수 활용하기 - 데이터 검색과 자동화의 비밀 (1) | 2024.05.24 |
엑셀매크로 - 매크로 설정방법 (0) | 2024.05.21 |
엑셀 VBA -폴더 내 파일 열기 (0) | 2023.05.12 |