- 최초 작성일: 2001-07-04
- 최종 수정일: 2026-09-29
- 조회수: 23 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 고급필터에서 3차원 참조하기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
질문 하나
...(중략)... 고급필터에 대해 다시 한번 올립니다. 강좌 내용을 보았지만, 그리고 다시 실행을 해 보아도... 에러 내용은 "필터된 데이터는 현재 시트에만 복사할 수 있습니다."라고 되어 있는데, 제가 할려고 하는 것은 아주 간단합니다. 자재 관리에서 전체 중에서 필요한 품목만 별도의 시트에 관리를 하고 싶습니다.
고급 필터? 그거 아주 옛날에 배운 것도 같은데... 하는 분은 아마 안계시겠지요? 일단 아래의 버튼을 눌러 보세요.
고급필터에서 3차원 참조하기
핵심 요약
- 고급 필터 결과를 다른 시트에 직접 복사하려 하면 현재 시트에만 복사할 수 있다는 제한에 부딪힐 수 있습니다.
- 결과를 받을 시트에서 먼저 고급 필터 명령을 실행한 뒤 원본 목록 범위와 조건 범위를 다른 시트에서 지정하면 원하는 위치로 추출할 수 있습니다.
- 고급 필터의 실행 기준 시트를 바꾸는 방식으로 시트 간 데이터 추출 문제를 해결하는 것이 핵심입니다.
| 년월 | 거래처명 | 지점명 | 대본사 판매 금액 | 자체 판매 금액 | <조건> | |||||
| 200110 | 마천 | 강남지점 | 6218619 | 0 | 년월 | 거래처명 | 지점명 | 대본사 판매 금액 | 자체 판매 금액 | |
| 200102 | 삼전 | 강남지점 | 0 | 10087350 | 강남지점 | >=120000000 | ||||
| 200108 | 삼전 | 강남지점 | 71800004 | 43985835 | ||||||
| 200101 | 삼전 | 강남지점 | 110986545 | 112805565 | ||||||
| 200112 | 삼전 | 강남지점 | 104666618 | 0 | ||||||
| 200110 | 삼전 | 강남지점 | 59362720 | 90880740 | ||||||
| 200109 | 삼전 | 강남지점 | 125252738 | 141394070 | ||||||
| 200110 | 삼전 | 강남지점 | 79721520 | 108082760 | ||||||
| 200104 | 삼전 | 강남지점 | 118825891 | 139338950 | ||||||
| 200111 | 삼전 | 강남지점 | 104585825 | 0 | ||||||
| 200105 | 삼전 | 강남지점 | 113471033 | 105688260 | ||||||
| 200111 | 삼전 | 강남지점 | 102830286 | 90880740 | ||||||
| 200101 | 삼전 | 강남지점 | 102830286 | 90880740 | ||||||
| 200106 | 삼전 | 강남지점 | 80522705 | 127466835 | ||||||
| 200112 | 삼전 | 강남지점 | 117833498 | 90880740 | ||||||
| 200103 | 삼전 | 강남지점 | 142596707 | 119957610 | ||||||
| 200107 | 삼전 | 강남지점 | 65656496 | 95056845 | ||||||
| 200102 | 삼전 | 강남지점 | 118325732 | 113826825 | ||||||
| 200108 | 가락 | 강남지점 | 125296999 | 127689100 | ||||||
| 200111 | 가락 | 강남지점 | 142929443 | 97750360 | ||||||
| 200101 | 가락 | 강남지점 | 142929443 | 97750360 | ||||||
| 200101 | 가락 | 강남지점 | 184252160 | 215282900 | ||||||
| 200110 | 가락 | 강남지점 | 143637474 | 97750360 | ||||||
| 200107 | 가락 | 강남지점 | 146119634 | 153792450 | ||||||
| 200112 | 가락 | 강남지점 | 157424223 | 97750360 | ||||||
| 200109 | 가락 | 강남지점 | 209701008 | 217922880 | ||||||
| 200111 | 가락 | 강남지점 | 206649852 | 0 | ||||||
| 200104 | 가락 | 강남지점 | 218235312 | 188219806 | ||||||
| 200105 | 가락 | 강남지점 | 200752786 | 138765620 | ||||||
| 200110 | 가락 | 강남지점 | 186423982 | 185412150 | ||||||
| 200103 | 가락 | 강남지점 | 191783548 | 154098861 | ||||||
| 200112 | 가락 | 강남지점 | 296775877 | 0 | ||||||
| 200106 | 가락 | 강남지점 | 173148835 | 226212000 | ||||||
| 200102 | 가락 | 강남지점 | 157527265 | 138820250 | ||||||
| 200110 | 남서울 | 강남지점 | 114581944 | 129651415 | ||||||
| 200108 | 남서울 | 강남지점 | 129124854 | 97515050 | ||||||
| 200111 | 남서울 | 강남지점 | 158398137 | 129651415 | ||||||
| 200101 | 남서울 | 강남지점 | 158398137 | 129651415 | ||||||
| 200109 | 남서울 | 강남지점 | 224403484 | 275729300 | ||||||
| 200101 | 남서울 | 강남지점 | 228100115 | 226424300 | ||||||
| 200112 | 남서울 | 강남지점 | 178512919 | 129651415 | ||||||
| 200111 | 남서울 | 강남지점 | 225675960 | 0 | ||||||
| 200112 | 남서울 | 강남지점 | 278583840 | 0 | ||||||
| 200103 | 남서울 | 강남지점 | 232312249 | 210772425 | ||||||
| 200110 | 남서울 | 강남지점 | 218783619 | 272322190 | ||||||
| 200106 | 남서울 | 강남지점 | 166104007 | 249339650 | ||||||
| 200104 | 남서울 | 강남지점 | 276838640 | 261006050 | ||||||
| 200105 | 남서울 | 강남지점 | 295425640 | 224969850 | ||||||
| 200102 | 남서울 | 강남지점 | 198579062 | 197697575 | ||||||
| 200107 | 남서울 | 강남지점 | 159063181 | 161568750 | ||||||
| 200111 | 동서울 | 강남지점 | 0 | 68919713 | ||||||
| 200101 | 동서울 | 강남지점 | 0 | 68919713 | ||||||
| 200108 | 신서초 | 강남지점 | 66577294 | 49742770 | ||||||
| 200111 | 신서초 | 강남지점 | 131753562 | 0 | ||||||
| 200109 | 신서초 | 강남지점 | 155033357 | 153810157 | ||||||
| 200110 | 신서초 | 강남지점 | 100499046 | 143551110 | ||||||
| 200101 | 신서초 | 강남지점 | 156747822 | 159441900 | ||||||
| 200112 | 신서초 | 강남지점 | 161735981 | 0 | ||||||
| 200107 | 신서초 | 강남지점 | 138385826 | 67897600 | ||||||
| 200110 | 신성 | 영등포지점 | 13768141 | -306158590 | ||||||
| 200108 | 신성 | 영등포지점 | 20076872 | 32126150 | ||||||
| 200101 | 신성 | 영등포지점 | 50564738 | 49082600 | ||||||
| 200105 | 신성 | 영등포지점 | 100030201 | 95707150 | ||||||
| 200103 | 신성 | 영등포지점 | 77970987 | 67395650 | ||||||
| 200111 | 신성 | 영등포지점 | 77783384 | 0 | ||||||
| 200106 | 신성 | 영등포지점 | 50620521 | 54723200 | ||||||
| 200112 | 신성 | 영등포지점 | 74176441 | 0 | ||||||
| 200107 | 신성 | 영등포지점 | 54864354 | 56681310 | ||||||
| 200101 | 신성 | 영등포지점 | 70394546 | 43728300 | ||||||
| 200102 | 신성 | 영등포지점 | 70972692 | 43492050 | ||||||
| 200110 | 신성 | 영등포지점 | 142307148 | 43728300 | ||||||
| 200111 | 신성 | 영등포지점 | 161952109 | 43728300 | ||||||
| 200112 | 신성 | 영등포지점 | 110910644 | 43728300 | ||||||
| 200102 | 등촌 | 영등포지점 | 0 | 3303650 | ||||||
| 200112 | 등촌 | 영등포지점 | 87377936 | 0 | ||||||
| 200101 | 등촌 | 영등포지점 | 86478596 | 82359900 | ||||||
| 200111 | 삼호 | 영등포지점 | 0 | 53357618 | ||||||
| 200101 | 삼호 | 영등포지점 | 0 | 0 | ||||||
| 200112 | 삼호 | 영등포지점 | 45423634 | 77072000 | ||||||
| 200101 | 군포 | 안양지점 | 67802227 | 65658975 | ||||||
| 200108 | 군포 | 안양지점 | 64015668 | 38995850 | ||||||
| 200110 | 군포 | 안양지점 | 45462685 | 75920550 | ||||||
| 200101 | 군포 | 안양지점 | 61092338 | 74938810 | ||||||
| 200105 | 군포 | 안양지점 | 71796477 | 87781275 | ||||||
| 200111 | 군포 | 안양지점 | 78761467 | 0 | ||||||
| 200103 | 군포 | 안양지점 | 85693678 | 102364375 | ||||||
| 200112 | 군포 | 안양지점 | 64254321 | 0 | ||||||
| 200110 | 군포 | 안양지점 | 117143518 | 74938810 | ||||||
| 200106 | 군포 | 안양지점 | 62815522 | 75159080 | ||||||
| 200111 | 군포 | 안양지점 | 131522640 | 74938810 | ||||||
| 200109 | 군포 | 안양지점 | 70199328 | 105553600 | ||||||
| 200102 | 군포 | 안양지점 | 79737549 | 78177355 | ||||||
| 200107 | 군포 | 안양지점 | 48324598 | 49745450 | ||||||
| 200112 | 군포 | 안양지점 | 113826023 | 74938810 | ||||||
| 200104 | 군포 | 안양지점 | 112290255 | 59278425 | ||||||
| 200108 | 안양 | 안양지점 | 112711306 | 76198150 | ||||||
| 200109 | 안양 | 안양지점 | 141950622 | 209849500 | ||||||
| 200110 | 안양 | 안양지점 | 100977526 | 178612000 | ||||||
| 200101 | 안양 | 안양지점 | 152154007 | 156115050 | ||||||
| 200101 | 안양 | 안양지점 | 139437411 | 147684250 | ||||||
| 200105 | 안양 | 안양지점 | 168796702 | 190067150 | ||||||
| 200103 | 안양 | 안양지점 | 177019306 | 141470600 | ||||||
| 200111 | 안양 | 안양지점 | 201712714 | 0 | ||||||
| 200112 | 안양 | 안양지점 | 237076933 | 147684250 | ||||||
| 200110 | 안양 | 안양지점 | 303712210 | 147684250 | ||||||
| 200111 | 안양 | 안양지점 | 299691155 | 147684250 | ||||||
| 200102 | 안양 | 안양지점 | 144507289 | 171370150 | ||||||
| 200106 | 안양 | 안양지점 | 130212051 | 157005100 | ||||||
| 200107 | 안양 | 안양지점 | 113442149 | 122164700 | ||||||
| 200112 | 안양 | 안양지점 | 152045946 | 0 | ||||||
| 200109 | 신흥 | 경동지점 | 106950416 | 129110450 | ||||||
| 200108 | 신흥 | 경동지점 | 86478160 | 35250265 | ||||||
| 200112 | 신흥 | 경동지점 | 102439698 | 0 | ||||||
| 200105 | 신흥 | 경동지점 | 105315639 | 0 | ||||||
| 200106 | 신흥 | 경동지점 | 91739750 | 0 | ||||||
| 200103 | 신흥 | 경동지점 | 107477222 | 0 | ||||||
| 200111 | 신흥 | 경동지점 | 109754637 | 0 | ||||||
| 200110 | 신흥 | 경동지점 | 101172858 | 113776755 | ||||||
| 200104 | 신흥 | 경동지점 | 120877694 | 0 | ||||||
| 200101 | 신흥 | 경동지점 | 103897162 | 0 | ||||||
| 200112 | 신흥 | 경동지점 | 114524005 | 0 | ||||||
| 200111 | 신흥 | 경동지점 | 151159110 | 0 | ||||||
| 200107 | 신흥 | 경동지점 | 80511567 | 54568450 | ||||||
| 200101 | 신흥 | 경동지점 | 129331807 | 110826850 | ||||||
| 200110 | 신흥 | 경동지점 | 224195193 | 8468927 | ||||||
| 200102 | 신흥 | 경동지점 | 100103725 | 0 | ||||||
| 200108 | 가정 | 경동지점 | 70878470 | 34197800 | ||||||
| 200106 | 가정 | 경동지점 | 70579739 | 108043600 | ||||||
| 200101 | 가정 | 경동지점 | 78984518 | 84871450 | ||||||
| 200109 | 가정 | 경동지점 | 101135707 | 123488750 | ||||||
| 200101 | 가정 | 경동지점 | 70231284 | 60632950 | ||||||
| 200107 | 가정 | 경동지점 | 70036157 | 77453250 | ||||||
| 200111 | 가정 | 경동지점 | 102008272 | 0 | ||||||
| 200104 | 가정 | 경동지점 | 101101365 | 95571700 | ||||||
| 200103 | 가정 | 경동지점 | 101930319 | 91648410 | ||||||
| 200110 | 가정 | 경동지점 | 100335521 | 98175800 | ||||||
| 200112 | 가정 | 경동지점 | 101251217 | 60632950 | ||||||
| 200111 | 가정 | 경동지점 | 100434244 | 60632950 | ||||||
| 200110 | 가정 | 경동지점 | 113927246 | 60632950 | ||||||
| 200112 | 가정 | 경동지점 | 90423665 | 0 | ||||||
| 200105 | 가정 | 경동지점 | 100158473 | 102117050 | ||||||
| 200102 | 가정 | 경동지점 | 90656650 | 83735400 |
잘 되지요? 고급 필터를 할 때 소스 데이터가 있는 시트에 결과를 출력할 때에는 아무 이상없이 잘 됩니다. 하지만 '고급 필터' 대화상자에서 '다른 장소에 복사' 항목을 선택한 다음, 복사 위치'를 지정할 때 현재의 시트가 아닌 다른 시트를 지정하고 필터링을 하려고 하면 여지없이 이런 반갑지 않은 에러 메시지를 접하게 됩니다.
그러면... 고급 필터에서는 3차원 참조, 즉 필터링 결과를 다른 시트에 표시할 수는 없을까요? 가능하다는 것을 먼저 보여 드리지요. 아래 버튼을 누르세요.
에러 메시지 없이 거짓말같이 필터링되지요?(Sheet1을 열어 보세요!) VBA를 사용하여 아래와 같이 코딩을 해 주었습니다. '복사 위치'를 지정할 때, 다른 시트를 지정해 주는 것이 Key Point 입니다.
Sub AdvancedFilter2()
Dim rngTarget As Range, rngCriteria As Range, rngSource As Range
Dim r As Integer
Dim Msg As String
Set rngTarget = Range("Output2")
Set rngCriteria = Range("Criteria")
Set rngSource = Range("Source")
rngSource.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=rngCriteria, _
CopyToRange:=rngTarget, Unique:=False
r = rngTarget.CurrentRegion.Rows.Count - 1
Msg = Msg & "필터링 작업이 끝났습니다." & vbCr
Msg = Msg & r & " 개의 레코드가 추출되었습니다!"
MsgBox Msg, , "작업 종료//By Exceller"
End Sub
어라? 이상하지요! 분명히 VBA 강좌가 아닌 엑셀 강좌 시간인데 VBA 코드를... ? 연일 계속되는 더위에 드뎌 Exceller가 맛이 가기 시작??? ^^ 아무리 'VBA는 내가 갈 길이 아니야!' 하는 분이라도 이 정도는 작성할 줄 알아야 이 험한 세상을 살아가는데 지장이 없지 않을까 싶어 소개해 드린 것입니다.
VBA를 사용하지 않고서도 해결하실 수 있습니다. 고급 필터링을 할 때, 결과값을 추출할 다른 시트, 그러니까 여기서는 Sheet1 시트를 선택한 다음에 '데이터-고급 필터' 메뉴를 선택하시면 됩니다. 다만 이 경우에 목록 범위'나 '조건 범위'는 일일이 지정해야 하는 불편은 감수를 하셔야 합니다.
날이 더워 맥주를 한잔(사실은 두 캔째 마시고 있지만... ^^) 했더니 더 이상 진행이 곤란하겠습니다.
해서... 오늘은 여기까지...
정리 — 고급필터에서 3차원 참조하기
| 구분 | 내용 |
|---|---|
| 문제 | 고급 필터의 복사 위치를 현재 시트가 아닌 다른 시트로 지정하면 에러 발생 |
| 해결 1 (VBA) | AdvancedFilter 메서드에서 CopyToRange로 다른 시트의 범위를 지정 |
| 해결 2 (수식 없이) | 결과를 받을 시트를 먼저 선택한 다음 데이터 - 고급 필터 실행 |
| 불편한 점 | 목록 범위와 조건 범위를 일일이 직접 지정해야 함 |
자주 묻는 질문 (FAQ)
Q1. 고급 필터 결과를 다른 시트에 바로 복사할 수 없는 이유는 무엇인가요?
고급 필터 대화상자에서 복사 위치를 현재 시트가 아닌 다른 시트로 지정하면 에러 메시지가 나타나기 때문입니다.
Q2. VBA로는 어떻게 다른 시트에 추출하나요?
AdvancedFilter 메서드의 CopyToRange에 다른 시트의 범위를 지정하면 에러 없이 추출됩니다. 복사 위치를 다른 시트로 지정하는 것이 핵심입니다.
Q3. VBA 없이도 가능한가요?
가능합니다. 결과를 표시할 시트를 선택한 상태에서 데이터 메뉴의 고급 필터를 실행하고, 목록 범위와 조건 범위를 다른 시트에서 직접 지정하면 됩니다.
마치며
고급 필터를 실행하는 시트를 결과가 나올 시트로 바꾸는 것이 3차원 참조의 핵심입니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.