안녕하세요 : ) 다니엘입니다.
1차 발표는 여러 쇼핑몰 발주서를 불러, 주문서 양식에 맞게 통합하는 것이였습니다. ^^ 중간 중간 어려움도 많았지만, DECK님과 챗GPT 덕분에 완성할 수 있었답니다. 😊
자신감을 얻어 각 쇼핑몰 별 매출 내역 통합에도 도전 해 봤습니다. 아직 진행 중이지만 만드는 과정에서 조금이나마 얻은 것이 있기에 그것을 나누고자 합니다.
[원하는 기능]
각 쇼핑몰 별 매출 파일 다운로드, 하나의 폴더에 모아 두기
엑셀 VBA 실행, 폴더 선택 창 뜨면 매출 폴더 선택
매출 파일 불러오기 → 추출 필요한 헤더 값과 원본 파일 비교, 매칭된 값 추출
무의미한 행(판매수량 0) 삭제
매출 파일이름 첫 문자와 쇼핑몰 매칭, 판매채널 열에 자동 추가
1. 파일 준비
쿠팡과 11번가 매출 파일을 다운로드 받습니다. 1행에는 해더가 있어야 합니다. 11번가 파일은 1~5행이 제목으로 되어 있어 해당 행을 삭제, 저장합니다. 매출 통합이라는 폴더를 만들고 두 파일을 이동합니다.
[11번가]
[쿠팡]
2. 주문 취합 양식 VBA 코드 수정
1차 발표 시 작성 했던 발주서 취합 VBA 코드를 수정합니다. 이 코드는
1) 발주서 열기 클릭
2) 발주서 폴더 지정
3) 주문 참조(Ref_order) 시트 값과 발주서 파일 헤더 비교
4) 일치하는 헤더 열 값 찾아 추출
합니다.
매출 시트도 위와 동일하게 진행하되 원하는 매출 헤더 값만 추출하면 되기에, 주문 VBA 코드를 매출에 맞게 수정 해 봅니다.
[매출 참조 시트]
쇼핑몰 별 헤더명이 다를 수 있기에 누락 없도록 헤더명을 체크, 채워줍니다.
3. 쿠팡 매출 불러오기
매출 내역 클릭, 쿠팡 매출 폴더를 선택, 불러옵니다. 매출 참조 시트 헤더와 일치한 헤더 값만 추출되었습니다.
4. 쿠팡: 판매수량 0 행 제거
판매 수량 0 표 기 행은 불필요하기에, 챗GPT에게 도움을 요청합니다.
첫 응답 VBA 코드를 실행했으나 오류가 발생, 수정 요청 후 받은 최종 코드입니다.
Sub DeleteRowsWithValueZero()
Dim ws As Worksheet
Dim i As Long
Set ws = ThisWorkbook.Sheets("매출") ' 시트 이름을 실제 시트 이름으로 변경하세요.
' E200부터 E3까지 역순으로 검사
For i = 300 To 3 Step -1
If ws.Cells(i, "E").Value = 0 Then
ws.Rows(i).Delete
End If
Next i
End Sub판매 수량 0인 행이 모두 삭제되었습니다. : )
5. 11번가 매출 불러오기
동일한 방식으로 11번가 내역을 불러오고, 잘 작동되는 걸 확인 합니다.
6. 판매처 자동 입력(진행 중)
판매처가 늘어나면 추출한 데이터가 어떤 채널 고객인지 헷갈릴 수 있겠죠? 불러온 파일명에 따라 자동으로 판매처가 입력되는 코드를 만들고 싶었습니다. 발주서의 경우 각 몰 마다 파일명이 달랐기 때문입니다.
쿠팡: DeliveryList
11번가: 710505…
티몬: 전체…
롯데ON: 롯데ON…
D로 시작하는 파일을 읽으면 자동으로 판매처 헤더 열에 쿠팡이 입력이 되는 것을 해 보고 싶어 클로드에게 물어 보았습니다.
코드 수정 후 실행 해 보니 쿠팡 파일명(‘D’로 시작)을 인식하지 못해 다시 물어 봅니다.
클로드가 알려준 최종 VBA 코드로 실행 해 봅니다.
Sub LoadFiles()
Dim folderPath As String
Dim fileName As String
Dim rowNum As Long
' 폴더 선택 대화상자 열기
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.Show
If .SelectedItems.Count > 0 Then
folderPath = .SelectedItems(1)
Else
Exit Sub
End If
End With
' 선택한 폴더 내의 모든 엑셀 파일 불러오기
fileName = Dir(folderPath & "\*.xls*")
rowNum = 2
Do While fileName <> ""
' 파일명 첫 글자에 따라 분류하여 시트에 입력
Select Case LCase(Left(fileName, 1))
Case "d"
Sheets("Sheet1").Cells(rowNum, 1).Value = "쿠팡"
Case "7"
Sheets("Sheet1").Cells(rowNum, 1).Value = "11번가"
Case "롯"
Sheets("Sheet1").Cells(rowNum, 1).Value = "롯데온"
Case "전"
Sheets("Sheet1").Cells(rowNum, 1).Value = "티몬"
Case Else
Sheets("Sheet1").Cells(rowNum, 1).Value = "기타"
End Select
' 다음 행으로 이동
rowNum = rowNum + 1
' 다음 파일 불러오기
fileName = Dir()
Loop
MsgBox "파일 불러오기가 완료되었습니다."
End Sub
파일명에 따라 판매채널 셀이 자동으로 채워지는 걸 확인 했습니다. 지금은 위 코드를 통해, 매출 관리 첫 셀에 판매채널이 자동 입력되도록 시도하고 있습니다.(진행 중)
7. 느낀 점
주문서 양식 취합은 생각보다 쉽게 구현되어 큰 자신감을 얻었습니다.
다만, 매출 관리로 이어지면서 오류 수정에 시간 소요가 많았습니다. 기본적인 VBA 코드를 이해하고 있었다면 시간이 많이 단축 되었을 거라 생각합니다.
모카님이 파이썬으로 구현한 주문서 취합 발표를 보고 많은 자극을 받았습니다. 파이썬으로 다음 과제에 도전 해 보겠습니다.
끝까지 함께 해 주신 분들께 감사드립니다. : )
#10기로우코드