- 최초 작성일: 2005-08-02
- 최종 수정일: 2026-09-30
- 조회수: 11 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 필터링 정보 표시하기(상태 표시줄)
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
얼마 전, '유용한 정보-FAQs' 코너에서 자동 필터 시, 상태 표시줄에 '필터 상태'라고만 표시되는 경우의 원인 및 대책에 대해 소개해 드린 적이 있습니다.
자동 필터를 실행하면 보통, 'OOO개 중 OO개의 레코드가 있습니다,' 라는 메시지가 상태 표시줄에 표시되는데, 이런 메시지 대신 그냥 '필터 상태'라는 문자만 덜렁 표시되는 경우가 있습니다. 이것은 테이블 내에 '51개 이상의 수식이 들어있고, 각 수식이 하나 이상의 셀 참조를 하고 있는 경우' 나타나는 문제입니다.
FAQs 코너의 Q13번에서는 이 문제를 해결하기 위한 방법으로서, (1) 계산 방법을 '수동'으로 지정하는 방법과 (2) SubTotal 함수를 이용하는 방법
등 두 가지를 제시해 드린 바 있습니다.
이번 시간에는 두 번째 방법을 조금 더 다듬어서 SubTotal 함수의 결과값을 상태 표시줄에 나타내 보도록 하겠습니다.
필터링 정보 표시하기(상태 표시줄)
핵심 요약: 상태 표시줄에 필터링된 데이터 개수 표시하기
자동 필터 시 상태 표시줄에 '필터 상태'만 나타나는 경우, Worksheet_Calculate 이벤트에서 SubTotal 함수를 이용해 필터링된 데이터의 개수를 직접 표시하는 방법입니다.
- 1단계: 데이터 영역에 이름(MyRange)을 정의하고 자동 필터를 설정합니다.
- 2단계: 시트의 코드 창에서 Worksheet의 Calculate 이벤트 프로시저를 만듭니다.
- 3단계: SubTotal(3, 영역) 결과를 Application.StatusBar에 표시합니다.
Step 1: 자동 필터 설정하기
(1) 월, 팀장명, 영업사원, 브랜드, 수량, 단가, 판매액으로 구성된 데이터가 있다고 가정합니다. 데이터 내부에 있는 임의의 셀을 선택한 다음, '데이터-필터-자동 필터' 메뉴를 선택합니다.
Step 2: Calculate 이벤트 프로시저 만들기
(2) 마우스 오른쪽 버튼으로 시트 탭을 클릭하면 단축 메뉴가 나타나는데 여기서 '코드 보기' 메뉴를 선택합니다.
(3) VB Editor 상태에서 'Worksheet'를 선택합니다.
(4) 워크시트 개체의 '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 함수의 결과를 활용해 보세요.