조건에 맞는 데이터를 가져오는데 중복이 발생한 데이터는 제거하고 가져오는 VBA 코드이다.
본 파일에는 고급필터를 이용하여 자료를 가져오는 VBA 코드와 Collection 함수를 이용하여 데이터를 가져오는 VBA코드가 같이 포함되어 있다.
Sub collection()
Dim sht1, sht2 As Worksheet
Dim rngC As Range
Dim rngData As Range
Dim rngTarget As Range
Dim X As New collection
Application.ScreenUpdating = False '// 화면 업데이트 (일시) 중지
Set sht1 = Sheets("메인") '// 화면에 뿌릴 시트
Set sht2 = Sheets("데이터") '// 가져올 데이터 시트
Range("I2:I" & Cells(Rows.Count).Row).Offset(1).ClearContents
Set rngData = sht2.Range(sht2.Cells(2, "C"), sht2.Cells(Rows.Count, "C").End(3)) '// 가져올 데이터 영역
On Error Resume Next '// 에러가 발생했을 경우 계속해서 다음을 실행하라
For Each rngC In rngData '// 데이터 시트의 C2셀부터 C의 마지막셀까지 반복하라
If rngC.Offset(, -2) = sht1.Cells(3, "G").Value And rngC.Offset(, -1) = sht1.Cells(3, "H").Value Then
X.Add rngC, CStr(rngC) '// 중복된 데이터는 저장하지 마라
If Err.Number <> 457 Then '// 이미 할당된 요소(element) 가 아니면
rngC.Copy Cells(Rows.Count, "I").End(3)(2)
End If
Err.Clear
End If
Next rngC
Set rngData = Nothing '// 메모리 비우기
MsgBox Range([I3], Cells(Rows.Count, "I").End(3)).Rows.Count & "개 가져옴"
End Sub
'업무 능력 향상 > 엑셀 VBA 활용' 카테고리의 다른 글
[VBA] 같은 자료를 콤마로 나열하기 (0) | 2015.06.16 |
---|---|
[VBA]한셀내에 콤마가 있는 데이터 분리 (0) | 2015.06.12 |
[VBA] 항목별 갯수 구하기 (0) | 2015.06.09 |
[VBA] 시트를 순환하며 조건에 맞는 자료 전부 가져오기 (0) | 2015.06.08 |
[VBA] srt 자막 타임에러 수정 (0) | 2015.06.07 |