Computer >> 컴퓨터 >  >> 소프트웨어 >> Office

Excel VBA로 자동 필터(AutoFilter) 켜짐 여부 확인하는 4가지 쉬운 방법

Excel의 자동 필터(AutoFilter) 기능은 특정 조건에 맞는 데이터를 빠르게 추출할 수 있어 매우 유용합니다. 하지만 기술적인 문제로 인해 자동 필터가 숨겨지거나, 실제로는 필터가 적용되어 있지 않은데도 Excel이 필터가 있다고 표시하는 경우가 종종 발생합니다. 이런 상황에서는 해당 워크시트에 자동 필터가 활성화되어 있는지 육안으로 판단하기가 거의 불가능합니다. 이때 가장 효과적이고 빠르며 안전한 해결 방법이 바로 VBA를 활용하는 것입니다. 이 글에서는 VBA 매크로를 사용해 Excel에서 자동 필터의 켜짐 여부를 확인하는 4가지 간단하고 빠른 방법을 소개합니다.

예제 데이터셋

Excel VBA로 자동 필터(AutoFilter) 켜짐 여부 확인하는 4가지 쉬운 방법

위 이미지는 이 글에서 설명할 절차에 사용되는 예제 데이터셋입니다.

방법 1. 워크시트에서 자동 필터의 켜짐/꺼짐 여부 확인하기

먼저 VBA를 사용해 현재 Excel 워크시트에서 자동 필터가 켜져 있는지 확인하는 방법을 알아보겠습니다.

실행 단계:

  • 키보드에서 Alt + F11을 누르거나 개발 도구 → Visual Basic 탭으로 이동하여 Visual Basic 편집기(VBE)를 엽니다.
  • 코드 창이 열리면 메뉴 모음에서 삽입 → 모듈을 클릭해 새 모듈을 추가합니다.
  • 아래 코드를 복사하여 코드 창에 붙여넣기 합니다.
Sub AutoFilterCheck()
If ActiveSheet.AutoFilterMode = True Then
MsgBox "Auto Filter is turned on"
Else
MsgBox "Auto Filter is turned off"
End If
End Sub
  • F5 키를 누르거나 메뉴 모음에서 실행 → Sub/UserForm 실행을 선택하고, 서브 메뉴 모음의 작은 실행 아이콘을 클릭하여 매크로를 실행할 수도 있습니다.

Excel VBA로 자동 필터(AutoFilter) 켜짐 여부 확인하는 4가지 쉬운 방법

코드가 정상적으로 실행된 후 결과는 다음 이미지와 같습니다.

Excel VBA로 자동 필터(AutoFilter) 켜짐 여부 확인하는 4가지 쉬운 방법

위 이미지를 보면 데이터셋에는 필터 화살표가 표시되어 있지 않지만, Excel MsgBox이 시트에서 자동 필터가 켜져 있다고 알려줍니다. 이처럼 작업 상태를 눈으로 확인하기 어려운 상황에서 VBA 매크로는 정확한 결과를 손쉽게 알려주는 강력한 도구입니다.

VBA 코드 설명

If ActiveSheet.AutoFilterMode = True Then
MsgBox "Auto Filter is turned on"
Else
MsgBox "Auto Filter is turned off"
End If

이 코드는 활성 시트의 자동 필터 모드가 True일 경우 Excel MsgBox에 "Auto Filter is turned on"(자동 필터가 켜져 있습니다)이라는 메시지를 반환하고, 그렇지 않으면 "Auto Filter is turned off"(자동 필터가 꺼져 있습니다)라는 메시지를 표시합니다.

방법 2. 코드 디버깅으로 활성 시트의 자동 필터 개수 세기

이번 섹션에서는 코드를 디버깅하여 Excel 시트에 몇 개의 자동 필터가 있는지 개수를 세는 방법을 살펴봅니다. 코드를 실행하면 결과가 Excel VBA의 직접 실행 창(Immediate Window)에 출력됩니다.

실행 단계:

  • 앞서와 동일하게 개발 도구 탭에서 Visual Basic 편집기를 연 후 코드 창에 모듈을 삽입합니다.
  • 아래 코드를 복사하여 붙여넣습니다.
Sub CountAutoFilters()
Dim iCount As Long
  If ActiveSheet.AutoFilterMode = True Then iCount = 1
  Debug.Print "AutoFilterMode Count: " & iCount
End Sub
  • 이후 앞 섹션에서 보여준 것처럼 매크로를 실행합니다. 결과는 아래 이미지와 같습니다.

Excel VBA로 자동 필터(AutoFilter) 켜짐 여부 확인하는 4가지 쉬운 방법

위 이미지에서 볼 수 있듯이, 직접 실행 창에 워크시트에서 활성화된 자동 필터의 총 개수가 출력됩니다.

VBA 코드 설명

Dim iCount As Long

변수를 선언하는 부분입니다.

If ActiveSheet.AutoFilterMode = True Then iCount = 1
  Debug.Print "AutoFilterMode Count: " & iCount

이 두 줄의 코드는 활성 시트의 자동 필터 모드가 True인 경우 카운트를 시작하여 총 개수를 출력하라는 의미입니다.

방법 3. 특정 열이 필터링되었는지 확인하기

이번에는 VBA를 사용해 Excel 스프레드시트에서 특정 열이 필터링되어 있는지 여부를 확인하는 방법을 알아보겠습니다.

실행 단계:

  • 앞서와 같이 개발 도구 탭에서 Visual Basic 편집기를 열고 코드 창에 모듈을 삽입합니다.
  • 아래 코드를 복사하여 붙여넣습니다.
Sub CheckColumnFilter()
    Dim iSheet As Worksheet
    Set iSheet = ActiveSheet
    If iSheet.AutoFilter.Filters(2).On Then
        MsgBox "Column B is filtered."
    Else
        MsgBox "Column B is not filtered."
    End If
End Sub
  • 매크로를 실행한 후 아래 이미지에서 출력 결과를 확인합니다.

Excel VBA로 자동 필터(AutoFilter) 켜짐 여부 확인하는 4가지 쉬운 방법

위 이미지를 보면 B열에 필터 화살표가 보이지만, 매크로는 그렇지 않다고 알려줍니다. 즉, 코드가 성공적으로 실행된 후 우리는 B열이 자동 필터링되어 있지 않다고 결론 내릴 수 있습니다.

VBA 코드 설명

Dim iSheet As Worksheet

워크시트용 변수를 선언합니다.

Set iSheet = ActiveSheet

선언한 변수에 활성 시트를 저장합니다.

If iSheet.AutoFilter.Filters(2).On Then
    MsgBox "Column B is filtered."
Else
    MsgBox "Column B is not filtered."
End If

이 코드는 활성 시트에서 2번째 열(B열)의 자동 필터가 켜져 있는 경우 Excel MsgBox에 "Column B is filtered."(B열은 필터링되었습니다)라는 메시지를 반환하고, 그렇지 않으면 "Column B is not filtered."(B열은 필터링되지 않았습니다)라는 메시지를 표시합니다.

방법 4. 통합 문서 전체에서 활성화된 자동 필터 확인하기

마지막으로, 특정 Excel 통합 문서 내 각 시트의 자동 필터가 활성화되어 있는지 확인하는 방법을 배워보겠습니다.

실행 단계:

  • 먼저 개발 도구 탭에서 Visual Basic 편집기를 열고 코드 창에 모듈을 삽입합니다.
  • 아래 코드를 복사하여 붙여넣습니다.
Sub CheckAutofilterSheet()
Dim z As Double
For z = 1 To ThisWorkbook.Sheets.Count
    If ThisWorkbook.Sheets(z).AutoFilterMode Then
        MsgBox ThisWorkbook.Sheets(z).Name & " has enabled Autofilter"
    End If
Next
End Sub
  • 매크로를 실행한 후 아래 이미지에서 결과를 확인합니다.

Excel VBA로 자동 필터(AutoFilter) 켜짐 여부 확인하는 4가지 쉬운 방법

위 이미지에서 볼 수 있듯이, 통합 문서에는 "Dataset"이라는 이름의 워크시트가 있습니다. Excel의 MsgBox"Dataset" 시트에 자동 필터가 켜져 있다고 알려줍니다. 이 코드는 특정 Excel 통합 문서의 모든 스프레드시트에 대해 동일하게 적용할 수 있습니다.

VBA 코드 설명

Dim z As Double

변수를 선언합니다.

For z = 1 To ThisWorkbook.Sheets.Count

현재 통합 문서의 1번째 시트부터 전체 시트 수까지 반복 루프를 시작합니다.

If ThisWorkbook.Sheets(z).AutoFilterMode Then
    MsgBox ThisWorkbook.Sheets(z).Name & " has enabled Autofilter"
End If
Next

첫 번째 시트에 자동 필터 모드가 켜져 있으면 MsgBox에 메시지를 표시합니다. 이후 조건문을 종료하고 다음 시트로 넘어가 반복 작업을 수행합니다. 이 과정은 현재 통합 문서의 모든 시트를 순회할 때까지 계속됩니다.

결론

지금까지 VBA 매크로를 사용해 Excel에서 자동 필터의 켜짐 여부를 확인하는 4가지 쉽고 빠른 방법을 살펴보았습니다. 이 글이 여러분의 업무에 실질적인 도움이 되기를 바랍니다. 주제와 관련해 궁금한 점이 있다면 언제든 질문해 주세요.

함께 읽으면 좋은 글

  • [해결 방법]: Range 클래스의 AutoFilter 메서드 오류 수정 (5가지 솔루션)
  • VBA 자동 필터: 오름차순 정렬하기 (3가지 방법)