커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
4주차 숙제
[왕초보] ChatGPT 300% 활용하기 v0
0주차
북마크
강*백
댓글
12
추천
0
조회수
84
조회수
84
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.



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) 단축키로 코드를 한 번에 선택할 수 있어요!




취소
 공유
취소
댓글 0
댓글 알림
나의얼굴