본문 바로가기
엑셀/엑셀 VBA

GPT) 필터링 해서 값이 있으면 ~하고 값이 없으면 가만히 있어라

by 한국수달보호협회장 2025. 4. 6.

 

GPT가 짜준 코드

 

필터링했을때 값이 있으면 복사 붙여넣기하고 값이 없으면 그냥 넘어가는 코드를 짜려고하는데 예시좀 보여줘
 

ChatGPT의 말:

네! 필터링 결과가 있는 경우에만 복사해서 다른 시트(또는 위치)에 붙여넣고, 값이 없으면 넘어가는 VBA 코드를 예시로 보여드릴게요.

🧾 시나리오

  • Sheet1에 데이터가 있고, A열에서 특정 값을 기준으로 필터링
  • 필터링 결과가 있다면, 그 결과를 Sheet2의 A1부터 복사해 붙여넣기

📌 VBA 코드 예시

 
Sub FilterAndCopyIfDataExists()
    Dim wsSrc As Worksheet
    Dim wsDest As Worksheet
    Dim lastRow As Long
    Dim visibleRows As Long

    Set wsSrc = ThisWorkbook.Sheets("Sheet1")
    Set wsDest = ThisWorkbook.Sheets("Sheet2")

    ' 기존 필터 해제
    If wsSrc.AutoFilterMode Then wsSrc.AutoFilterMode = False

    ' 마지막 행 찾기
    lastRow = wsSrc.Cells(wsSrc.Rows.Count, "A").End(xlUp).Row

    ' A열에서 "Apple"로 필터링
    With wsSrc.Range("A1:A" & lastRow)
        .AutoFilter Field:=1, Criteria1:="Apple"
    End With

    ' 필터링된 결과의 개수 확인 (헤더 제외)
    On Error Resume Next
    visibleRows = wsSrc.Range("A2:A" & lastRow).SpecialCells(xlCellTypeVisible).Count
    On Error GoTo 0

    ' 복사/붙여넣기 실행 조건
    If visibleRows > 0 Then
        ' 필터링된 셀 범위 복사
        wsSrc.Range("A1:A" & lastRow).SpecialCells(xlCellTypeVisible).EntireRow.Copy

        ' Sheet2에 붙여넣기 (A1부터)
        wsDest.Range("A1").PasteSpecial xlPasteValues
        Application.CutCopyMode = False
        MsgBox "필터링된 데이터를 복사했습니다."
    Else
        MsgBox "필터링된 결과가 없습니다. 넘어갑니다."
    End If

    ' 필터 해제
    wsSrc.AutoFilterMode = False
End Sub
 
 
 
 
 
visibleRows 변수에서 xlCellTypeVisible보다 currentregion으로 하는게 나을듯