• 최초 작성일: 2005-08-02
  • 최종 수정일: 2026-09-30
  • 조회수: 11 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 필터링 정보 표시하기(상태 표시줄)

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

얼마 전, '유용한 정보-FAQs' 코너에서 자동 필터 시, 상태 표시줄에 '필터 상태'라고만 표시되는 경우의 원인 및 대책에 대해 소개해 드린 적이 있습니다.

자동 필터를 실행하면 보통, 'OOO개 중 OO개의 레코드가 있습니다,' 라는 메시지가 상태 표시줄에 표시되는데, 이런 메시지 대신 그냥 '필터 상태'라는 문자만 덜렁 표시되는 경우가 있습니다. 이것은 테이블 내에 '51개 이상의 수식이 들어있고, 각 수식이 하나 이상의 셀 참조를 하고 있는 경우' 나타나는 문제입니다.

FAQs 코너의 Q13번에서는 이 문제를 해결하기 위한 방법으로서, (1) 계산 방법을 '수동'으로 지정하는 방법과 (2) SubTotal 함수를 이용하는 방법

등 두 가지를 제시해 드린 바 있습니다.

이번 시간에는 두 번째 방법을 조금 더 다듬어서 SubTotal 함수의 결과값을 상태 표시줄에 나타내 보도록 하겠습니다.

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 대표 직강 1강 무료

🎁 파워툴스 마스터클래스 · 엑셀 바이브 코딩

AI에게 말로 지시해서 '나만의 엑셀 도구'를 만들고 리본에 장착합니다.

  • 코딩 지식 없이 시작 · 코드는 AI가 작성
  • 엑셀 리본에 내 탭과 버튼을 만들고 XLAM으로 공유
  • 1강 무료 수강 가능
수강 신청하기 강의 소개 보기

필터링 정보 표시하기(상태 표시줄)

핵심 요약: 상태 표시줄에 필터링된 데이터 개수 표시하기

자동 필터 시 상태 표시줄에 '필터 상태'만 나타나는 경우, Worksheet_Calculate 이벤트에서 SubTotal 함수를 이용해 필터링된 데이터의 개수를 직접 표시하는 방법입니다.

  • 1단계: 데이터 영역에 이름(MyRange)을 정의하고 자동 필터를 설정합니다.
  • 2단계: 시트의 코드 창에서 Worksheet의 Calculate 이벤트 프로시저를 만듭니다.
  • 3단계: SubTotal(3, 영역) 결과를 Application.StatusBar에 표시합니다.

Step 1: 자동 필터 설정하기

(1) 월, 팀장명, 영업사원, 브랜드, 수량, 단가, 판매액으로 구성된 데이터가 있다고 가정합니다. 데이터 내부에 있는 임의의 셀을 선택한 다음, '데이터-필터-자동 필터' 메뉴를 선택합니다.

Step 2: Calculate 이벤트 프로시저 만들기

(2) 마우스 오른쪽 버튼으로 시트 탭을 클릭하면 단축 메뉴가 나타나는데 여기서 '코드 보기' 메뉴를 선택합니다.

(3) VB Editor 상태에서 'Worksheet'를 선택합니다.

VB Editor 코드 창 상단의 개체 드롭다운에서 Worksheet를 선택하는 화면
아이엑셀러

(4) 워크시트 개체의 'Calculate' 이벤트를 선택합니다.

프로시저 드롭다운에서 Calculate 이벤트를 선택하는 화면
아이엑셀러

(5) Worksheet 오브젝트의 Calculate 이벤트 프로시저에 다음과 같은 코드를 작성합니다.

Private Sub Worksheet_Calculate()

    Dim rngTarget As Range
    Set rngTarget = Range("MyRange")
    Application.DisplayStatusBar = True
    Application.StatusBar = Application.WorksheetFunction.Subtotal(3, rngTarget) & "개의 데이터가 있습니다."

End Sub

(6) 워크시트 상태로 되돌아와서 '브랜드' 필드에서 '설화수' 브랜드를 선택하면 '17개의 데이터가 있습니다'라고 제대로 표시가 됩니다.

이와 같은 방법으로 상태 표시줄에 여러 가지 다른 유용한 정보들을 표시할 수 있겠지요?

오늘은 여기까지…

정리 — 필터링 개수 표시 코드 핵심

구분 사용한 코드 역할
이벤트 Worksheet_Calculate 재계산될 때마다 실행
대상 영역 Range("MyRange") 이름 정의된 데이터 영역
개수 계산 WorksheetFunction.Subtotal(3, rngTarget) 필터링된 행만 개수 계산
상태 표시줄 Application.StatusBar = ... 결과를 상태 표시줄에 표시
표시 켜기 Application.DisplayStatusBar = True 상태 표시줄이 보이도록 설정

자주 묻는 질문 (FAQ)

Q1. 자동 필터를 하면 상태 표시줄에 왜 '필터 상태'라고만 나오나요?

표 안에 51개 이상의 수식이 있고 각 수식이 하나 이상의 셀을 참조하고 있는 경우에 나타나는 현상입니다. 이때 'OOO개 중 OO개의 레코드가 있습니다' 메시지 대신 '필터 상태'만 표시됩니다.

Q2. SubTotal 함수의 첫 번째 인수 3은 무엇을 뜻하나요?

3은 COUNTA, 즉 비어 있지 않은 셀의 개수를 구하는 함수 번호입니다. SubTotal 함수는 필터링으로 숨겨진 행을 제외하고 계산합니다.

Q3. 다른 정보도 상태 표시줄에 표시할 수 있나요?

네, SubTotal 함수의 함수 번호를 바꾸어 합계(9), 평균(1) 등을 계산해 함께 표시할 수 있습니다.

마치며

같은 방법으로 상태 표시줄에 여러 가지 유용한 정보를 표시할 수 있습니다. SubTotal 함수의 결과를 활용해 보세요.