필터에 값이 없을 때 건너뛰기 및 활성화 범위만 복사하는 방법

VBA
작성자
안녕하세요
작성일
2024-02-22 14:23
조회
456
엑셀버전 : 엑셀2019

운영체제 : 윈도우10

질문 요약 : 필터 값을 활용하는 방법

Sheets("Sheet1").Select
ActiveSheet.Range("$A$3:$N$1003").AutoFilter Field:=2, Criteria1:= "1"
Range("B9:N9").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet2").Select
Range("B4").Select
ActiveSheet.Paste
Sheets("Sheet2").Select
With ActiveWorkbook.Sheets("Sheet2").Tab
.Color = 65535
.TintAndShade = 0
End With
Sheets("Sheet1").Select
ActiveSheet.Range("$A$3:$N$1003").AutoFilter Field:=2, Criteria1:="2"
Range("B10:N10").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet3").Select
Range("B4").Select
ActiveSheet.Paste
Sheets("Sheet3").Select
With ActiveWorkbook.Sheets("Sheet3").Tab
.Color = 65535
.TintAndShade = 0
End With
End Sub

 

Sheet1 작성된 값들을 같은 필터 값끼리 Sheet2,Sheet3에 붙여넣기 하는 것까지는 했습니다만,

그 필터 값이 없을 때 건너뛰는 방법 및 필터 활성화시 그 범위만을 지정하는 방법을 알고 싶습니다.

실력자 분들의 고견 부탁드립니다.

신고
스크랩
공유
전체 10

  • 2024-02-22 16:58
    채택된 답변

    @안녕하세요 님 필터 범위 아래쪽이 비어 있다는 전제로 설명을 드립니다.

    ActiveSheet.Range("$A$3:$N$1003").AutoFilter Field:=2, Criteria1:= "1"

    이 부분에서 N1003이 고정이 아니라면
    Dim iLastRow As Long
    ActiveSheet.AutoFilterMode = False '//End방식으로 마지막 행 찾을 때 필수
    iLastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, 14).End(xlUp).Row
    ActiveSheet.Range("$A$3:$N$" & iLastRow).AutoFilter Field:=2, Criteria1:= "1"

    처럼 할 수 있으며

    필터가 3행에 걸려 있으므로 자료가 있는지 없는지는 다시 같은 방식으로 점검합니다.
    필터된 셀만 복사할 때는 SpecialCells(xlCelltypeVisible) 을 사용합니다.
    ActiveSheet.Range("$A$3:$N$" & iLastRow).AutoFilter Field:=2, Criteria1:= "1"
    iLastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, 14).End(xlUp).Row
    IF iLastRow <=3 Then

      Msgbox "해당되는 자료 없음"
    Else
      '// Copy Process
      ActiveSheet.Range("$B$4:$N$" & iLastRow).SpecialCells(xlCelltypeVisible).Copy
    '//<중략>
    End IF

    그리고


    • 2024-02-23 08:46

      @원조백수 님 만약 필터값이 숫자가 아니라 글자라면 IF iLastRow <=3 Then 부분을 어떻게 수정하면 될까요 ?


      • 2024-02-23 16:14

        @안녕하세요 님 필터는 여기서 키워드를 넣는 것인데요...

        ActiveSheet.Range("$A$3:$N$" & iLastRow).AutoFilter Field:=2, Criteria1:= "1"


        • 2024-02-23 16:21

          @원조백수 님 제가 설명을 잘못했네요.

          ActiveSheet.Range("$A$3:$N$" & iLastRow).AutoFilter Field:=2, Criteria1:= "값"

          처럼 Criteria1에 들어가는 값이 숫자가 아니라 글자라면 그 값이 없을 때 건너뛰는 수식이 어떻게 되는지 알고 싶습니다.


          • 2024-02-23 16:32

            @안녕하세요 님 필터가 없는 것을 건너 뛰는 것은 이 부분입니다.
            필터된 게 없으면 iLastRow가 필터가 걸린 행번호인 3이 되므로 그것으로 없다는 것을 판단하는 것입니다.
            IF iLastRow <=3 Then
            Msgbox "해당되는 자료 없음"


            • 2024-02-23 17:36

              @원조백수 님 우선 일러주신 방법대로 구성을 해보았는데, 작동은 되는데 없는 값을 건너뜀 없이 그냥 작동을 합니다.

              보시고 고견 부탁드립니다.

              첨부파일 : 새-Microsoft-Excel-워크시트.xlsm


              • 2024-02-23 22:13
                채택된 답변

                @안녕하세요 님 처음에 보여준 코드와 예제 파일의 범위가 다르네요...
                일단, 예제 파일을 기준으로 코드를 수정했습니다.

                주의사항입니다.
                1. 모듈 첫줄에 반드시 Option Explicit 을 명시하세요.
                중간에 변수명 오타가 났을 경우 정말 헤매게 됩니다. iLasetRow -> iLastRow
                2. 필터는 표의 첫줄에 걸어 주세요.  제목줄과 그 아래 자료줄을 구분하기 쉽습니다.
                3. 가능한 Select를 사용하지 않고 코딩하는 습관을 들이세요.

                Sub 매크로2()
                 
                    Sheets("Sheet1").Select
                    Dim iLastRow As Long
                    With Sheets("Sheet1")
                      .AutoFilterMode = False
                      iLastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
                      .Range("$A$2:$C$" & iLastRow).AutoFilter Field:=2, Criteria1:="1"
                      iLastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
                      If iLastRow <= 2 Then
                          MsgBox "해당되는 자료 없음"
                      Else
                          .Range("$B$3:$C$" & iLastRow).SpecialCells(xlCellTypeVisible).Copy Sheets("Sheet2").Range("B4")
                          With Sheets("Sheet2").Tab
                              .Color = 65535
                              .TintAndShade = 0
                          End With
                      End If
                 
                 
                      .AutoFilterMode = False
                      iLastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
                      .Range("$A$2:$C$" & iLastRow).AutoFilter Field:=2, Criteria1:="2"
                      iLastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
                      If iLastRow <= 2 Then
                          MsgBox "해당되는 자료 없음"
                      Else
                          .Range("$B$3:$C$" & iLastRow).SpecialCells(xlCellTypeVisible).Copy Sheets("Sheet3").Range("B4")
                          With ActiveWorkbook.Sheets("Sheet3").Tab
                            .Color = 65535
                            .TintAndShade = 0
                          End With
                      End If
                 
                    End With
                End Sub

                 

                첨부파일 : 새-Microsoft-Excel-워크시트.xlsm


                • 2024-02-26 08:11

                  @원조백수 님 확인이 늦었습니다. 친절한 답변 감사드립니다.

                  덕분에 원하던 결과를 얻을 수 있었습니다.

                  알려주신 주의사항들 숙지하여 좀 더 발전해 나가보도록 하겠습니다.


  • 삭제된 댓글입니다.

  • 2024-02-25 20:08

    @안녕하세요 님 놀라고 갑니다


전체 16,940
번호 카테고리 제목 작성자 작성일 추천 조회
알림
[📚진짜쓰는 실무엑셀] 2024년 엑셀 공부, 이 책 한권으로 마스터하세요! (291)
오빠두엑셀 | 2022.02.03 | 추천 554 | 조회 846496
오빠두엑셀 2022.02.03 554 846496
공지사항 문서서식
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (197)
오빠두엑셀 | 2021.10.28 | 추천 304 | 조회 31519
오빠두엑셀 2021.10.28 304 31519
74633 문서서식
New 안녕하세요 게임 시스템 테이블 작성 배우고 있는데 기초적인 부분을 잘 모르겠어서 질문 드립니다! 첨부파일
코니 | 20:19 | 추천 0 | 조회 2
코니 20:19 - 2
74632 기능/도구
New 챗gpt 연동해서 이미지로 된 표의 데이터를 가져오려고 합니다.
김수현 | 19:16 | 추천 0 | 조회 21
김수현 19:16 - 21
74628 구글시트
New IMPORTRANGE 함수에서 칸을 늘리면 사라지는데 고정하는 방법은 없을까요? (3)
야망이 | 17:36 | 추천 0 | 조회 36
야망이 17:36 - 36
74627 문서서식
New 조건부 서식 문의 엑셀파일첨부파일 (1)
배고픈짐승 | 15:44 | 추천 0 | 조회 55
배고픈짐승 15:44 - 55
74626 파워쿼리/피벗
New [파워쿼리] 여러 파일 한번에 불러올 때 데이터 유실 첨부파일 (3)
naa**** | 14:40 | 추천 0 | 조회 51
naa**** 14:40 - 51
74625 VBA
New 시트이동시 유저폼 실행방법 문의 (2) 답변완료
땡이 | 14:36 | 추천 0 | 조회 48
땡이 14:36 - 48
74621 기능/도구
New 4개의 열 에서 같은 이름 가로로 정렬 (3)
Bukonge | 12:36 | 추천 0 | 조회 55
Bukonge 12:36 - 55
74618 VBA
New 유저폼에 바코드스캔시 입력속도 개선방법? (5) 답변완료
땡이 | 11:36 | 추천 0 | 조회 51
땡이 11:36 - 51
74616 함수/공식
New Rawdata 첨부파일 (4)
HIHUGO | 10:48 | 추천 0 | 조회 62
HIHUGO 10:48 - 62
74604 문서서식
New 간트차트 조건부서식 이용 문의 엑셀파일첨부파일 (3)
배고픈짐승 | 2024.10.30 | 추천 0 | 조회 77
배고픈짐승 2024.10.30 - 77
74599 함수/공식
New 이런 경우에는 무슨 함수를 써야할까요..? (2)
iwnqn | 2024.10.30 | 추천 0 | 조회 97
iwnqn 2024.10.30 - 97
74598 문서서식
New 엑셀 유효성 검사 뛰어 쓰기 문제 엑셀파일 (2) 답변완료
퉁퉁이 | 2024.10.30 | 추천 0 | 조회 68
퉁퉁이 2024.10.30 - 68
74592 함수/공식
New 여러 값들 중에서 원하는 값을 찾고 싶어요 도와주세요! 첨부파일 (9) 답변완료
저도해볼게요 | 2024.10.30 | 추천 0 | 조회 99
저도해볼게요 2024.10.30 - 99
74589 구글시트
New 한셀에 줄바꿈으로 있는 여러데이터를 한셀에 한데이터 들어가게끔 일괄로 하고 싶습니다 첨부파일 (4) 답변완료
스톤스톤 | 2024.10.30 | 추천 0 | 조회 60
스톤스톤 2024.10.30 - 60
74585 VBA
New UserForm 크기질문 첨부파일 (5)
땡이 | 2024.10.30 | 추천 0 | 조회 72
땡이 2024.10.30 - 72
74583 함수/공식
New XLOOKUP 함수의 다중조건을 잘 모르겠습니다 첨부파일 (6)
qlcc**** | 2024.10.30 | 추천 0 | 조회 87
qlcc**** 2024.10.30 - 87
74582 함수/공식
New filter 함수에 대해 문의드립니다 (5)
김은상 | 2024.10.30 | 추천 0 | 조회 70
김은상 2024.10.30 - 70
74581 구글시트
New 구글폼 견적서 자동화 관련, 폼에서 입력된 이미지 파일을 견적서에 넣는 방법 좀 알려주시면 감사하겠습니다.
| 2024.10.30 | 추천 0 | 조회 56
2024.10.30 - 56
74572 차트/그래프
New 꺽은선 그래프의 레이블이 원복이 됩니다. 첨부파일 (3)
구리구리이 | 2024.10.30 | 추천 0 | 조회 62
구리구리이 2024.10.30 - 62
74570 함수/공식
New 배수 금액으로 순번 정하기 알려 주세요...ㅠ 엑셀파일첨부파일 (3) 답변완료
서기 | 2024.10.30 | 추천 0 | 조회 59
서기 2024.10.30 - 59
74566 함수/공식
New 두개의 열에 입력된 데이터를 순서 바꿔서 입력으로 중복일 때 골라내는 법 엑셀파일첨부파일 (1) 답변완료
문과적남자 | 2024.10.30 | 추천 0 | 조회 60
문과적남자 2024.10.30 - 60
74564 함수/공식
New 각 열별로 합 구하는 방법 첨부파일 (2) 답변완료
라핼 | 2024.10.30 | 추천 0 | 조회 78
라핼 2024.10.30 - 78
74563 함수/공식
New 필터 적용시 중복값 제외 카운트 되는 법 좀 알려주세요 ㅠㅠ 첨부파일 (1)
정재욱 | 2024.10.30 | 추천 0 | 조회 73
정재욱 2024.10.30 - 73
74558 함수/공식
New 문자와 숫자가 섞여있는 열의 합계와 평균을 구하는 방법을 알려주세요!! 첨부파일 (9)
침착해 | 2024.10.30 | 추천 0 | 조회 79
침착해 2024.10.30 - 79
74556 함수/공식
New 세트상품 마진율 구하기 (2)
ek02 | 2024.10.30 | 추천 0 | 조회 65
ek02 2024.10.30 - 65
74543 기능/도구
New 문자와 숫자 혼합된 셀에서 숫자만 따로 따올수 있는 기능이 있을까요? 첨부파일 (4)
야만용사 | 2024.10.29 | 추천 0 | 조회 99
야만용사 2024.10.29 - 99
74542 기능/도구
New 엑셀 백분율 숫자로변경 (3)
rarara | 2024.10.29 | 추천 0 | 조회 90
rarara 2024.10.29 - 90
74540 함수/공식
New ★데이터 가공★ 잘못된 데이터를 올바른 데이터로 변환하는 과정을 도와주세요 ㅠㅠ 엑셀파일첨부파일 (11)
| 2024.10.29 | 추천 0 | 조회 131
2024.10.29 - 131
74539 함수/공식
New 안녕하세요 INDEX, MATCH 다중조건 질문드립니다! 엑셀파일 (3)
gys**** | 2024.10.29 | 추천 0 | 조회 97
gys**** 2024.10.29 - 97
74533 함수/공식
New 산출집계시트에 항목을 산출서에서 가져오고싶어요 엑셀파일 (3)
Moto | 2024.10.29 | 추천 0 | 조회 91
Moto 2024.10.29 - 91