728x90

조건에 맞는 데이터를 가져오는데 중복이 발생한 데이터는 제거하고 가져오는 VBA 코드이다.



고급필터_샘플.xlsm


본 파일에는 고급필터를 이용하여 자료를 가져오는 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

블로그 이미지

Link2Me

,