
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
You
source.xlsx 파일을 보고, part가 마케팅인 데이터만 골라 마케터 시트에 추가하는 VBA 코드를 만들어줘
ChatGPT
아래는 요청하신 작업을 수행하는 VBA 코드입니다. 이 코드는 "source.xlsx" 파일을 읽어와서 "part" 열이 "마케팅"인 데이터만을 "마케터 시트"에 추가합니다.
Sub CopyMarketingData()
Dim sourceWorkbook As Workbook
Dim marketerSheet As Worksheet
Dim sourceSheet As Worksheet
Dim lastRowSource As Long
Dim lastRowMarketer As Long
Dim i As Long, j As Long
' 소스 엑셀 파일 열기
Set sourceWorkbook = Workbooks.Open("source.xlsx")
' 소스 시트 설정
Set sourceSheet = sourceWorkbook.Sheets(1) ' "source.xlsx" 파일의 첫 번째 시트를 사용합니다. 시트를 변경해야 한다면 숫자를 수정하세요.
' 마케터 시트 설정
On Error Resume Next
Set marketerSheet = ThisWorkbook.Sheets("마케터 시트") ' "마케터 시트"가 이미 있는 경우를 고려하여 시트를 찾습니다.
On Error GoTo 0
If marketerSheet Is Nothing Then ' "마케터 시트"가 없는 경우 새 시트를 생성합니다.
Set marketerSheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
marketerSheet.Name = "마케터 시트"
End If
' 소스 데이터의 마지막 행 찾기
lastRowSource = sourceSheet.Cells(sourceSheet.Rows.Count, "A").End(xlUp).Row
' 마케터 시트의 마지막 행 찾기
lastRowMarketer = marketerSheet.Cells(marketerSheet.Rows.Count, "A").End(xlUp).Row
' 데이터 복사
For i = 2 To lastRowSource ' 소스 시트에서 2번째 행부터 마지막 행까지 확인합니다. (첫 번째 행은 헤더일 것으로 가정)
If sourceSheet.Cells(i, "B").Value = "마케팅" Then ' "part" 열이 "마케팅"인지 확인합니다. 열의 위치를 적절히 수정하세요.
' 마케터 시트에 데이터 추가
For j = 1 To sourceSheet.Cells(i, sourceSheet.Columns.Count).End(xlToLeft).Column
marketerSheet.Cells(lastRowMarketer + 1, j).Value = sourceSheet.Cells(i, j).Value
Next j
lastRowMarketer = lastRowMarketer + 1
End If
Next i
' 엑셀 파일 닫기
sourceWorkbook.Close SaveChanges:=False
End Sub
***코드를 복사--> source.xlsx 에서 Visual Basic-->붙여넣기-->매크로실행(F5)-->

3일째 반복입니다.
작성한 코드 및 에러 메세지
Sub CopyMarketingData()
Dim sourceWorkbook As Workbook
Dim marketerSheet As Worksheet
Dim sourceSheet As Worksheet
Dim lastRowSource As Long
Dim lastRowMarketer As Long
Dim i As Long, j As Long
' 소스 엑셀 파일 열기
Set sourceWorkbook = Workbooks.Open("source.xlsx")
' 소스 시트 설정
Set sourceSheet = sourceWorkbook.Sheets(1) ' "source.xlsx" 파일의 첫 번째 시트를 사용합니다. 시트를 변경해야 한다면 숫자를 수정하세요.
' 마케터 시트 설정
On Error Resume Next
Set marketerSheet = ThisWorkbook.Sheets("마케터 시트") ' "마케터 시트"가 이미 있는 경우를 고려하여 시트를 찾습니다.
On Error GoTo 0
If marketerSheet Is Nothing Then ' "마케터 시트"가 없는 경우 새 시트를 생성합니다.
Set marketerSheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
marketerSheet.Name = "마케터 시트"
End If
' 소스 데이터의 마지막 행 찾기
lastRowSource = sourceSheet.Cells(sourceSheet.Rows.Count, "A").End(xlUp).Row
' 마케터 시트의 마지막 행 찾기
lastRowMarketer = marketerSheet.Cells(marketerSheet.Rows.Count, "A").End(xlUp).Row
' 데이터 복사
For i = 2 To lastRowSource ' 소스 시트에서 2번째 행부터 마지막 행까지 확인합니다. (첫 번째 행은 헤더일 것으로 가정)
If sourceSheet.Cells(i, "B").Value = "마케팅" Then ' "part" 열이 "마케팅"인지 확인합니다. 열의 위치를 적절히 수정하세요.
' 마케터 시트에 데이터 추가
For j = 1 To sourceSheet.Cells(i, sourceSheet.Columns.Count).End(xlToLeft).Column
marketerSheet.Cells(lastRowMarketer + 1, j).Value = sourceSheet.Cells(i, j).Value
Next j
lastRowMarketer = lastRowMarketer + 1
End If
Next i
' 엑셀 파일 닫기
sourceWorkbook.Close SaveChanges:=False
End Sub

오류 발생 시, 작성한 코드 전체와 에러 메시지를 첨부해 주세요.
Tip 1) </> 아이콘을 눌러 코드박스를 만들어 보세요.
Tip 2) Ctrl+A(맥의 경우 Command+A) 단축키로 코드를 한 번에 선택할 수 있어요!
