개발노트/VBA

[VBA] AutoFilter 기능으로 조건에 해당하는 데이터 필터링

lovvepearl 2024. 4. 4. 17:22
Function filterData()
	On Error GoTo RESULT

Application.ScreenUpdating = False '업데이트 방지'
Application.DisplayAlerts = False '팝업 무시'

Sheets(1).Select
Set rawData = Sheets(1).UsedRange '데이터 추출하고자 하는 시트'

'숨기기 취소'
Cells.EntireColumn.Hidden = False

'필터 적용되어있는 경우, 필터 해제'
If ActiveSheet.AutoFilterMode Then
	ActiveSheet.UsedRange.AutoFilter
End If

'아래 조건에 해당하는 시트 데이터 필터링'
With rawData
.AutoFilter 7, "법정·필수" '7번째 열 값이 법정·필수인 데이터만 필터링'
.AutoFilter 2, "<> ", xlAnd, "<>본사" '2번째 열 값이 공란이 아닌 경우와 본사가 아닌 경우 모두 필터링'
.AutoFilter 3, "<>관리자", xlAnd, "<>테스트" '3번째 열 값이 관리자가 아닌 경우와 테스트가 아닌 경우 모두 필터링'
End With

'필터링 완료한 데이터 복사 후 붙여넣기'
Sheets(1).UsedRange.Copy Destination:=Sheets(2).Range("A1")

'업데이트 및 팝업 활성화'
Application.ScreenUpdating = True
Application.DisplayAlerts = True

RESULT:
    If Err.Number <> 0 Then
        filterData = Err.Number
    Else
        filterData = "성공"
    End If
End Function