• 최초 작성일: 2001-07-04
  • 최종 수정일: 2026-09-29
  • 조회수: 23 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 고급필터에서 3차원 참조하기

들어가기 전에

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

질문 하나

...(중략)... 고급필터에 대해 다시 한번 올립니다. 강좌 내용을 보았지만, 그리고 다시 실행을 해 보아도... 에러 내용은 "필터된 데이터는 현재 시트에만 복사할 수 있습니다."라고 되어 있는데, 제가 할려고 하는 것은 아주 간단합니다. 자재 관리에서 전체 중에서 필요한 품목만 별도의 시트에 관리를 하고 싶습니다.

고급 필터? 그거 아주 옛날에 배운 것도 같은데... 하는 분은 아마 안계시겠지요? 일단 아래의 버튼을 눌러 보세요.

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

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

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


26년 경력 Microsoft MVP 권현욱(엑셀러) 지음

📊 신간 전자책(PDF) · 287쪽 · 13500원

엑셀 대시보드를 만드는 최적의 '표준 3계층 구조'

  • 3초 안에 읽히는 화면 설계 감각 습득
  • Microsoft Excel MVP의 실전 노하우 수록
  • 중간마진 없는 합리적인 가격, 오직 아이엑셀러에서만!
지금 구매하기 완성 화면 보기

고급필터에서 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차원 참조하기 예제 화면 1
아이엑셀러

그러면... 고급 필터에서는 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 입문]을 먼저 보시면 이해하기 쉽습니다.