온라인 쇼핑몰 매출 한 곳에 모아보기

안녕하세요 : ) 다니엘입니다.

1차 발표는 여러 쇼핑몰 발주서를 불러, 주문서 양식에 맞게 통합하는 것이였습니다. ^^ 중간 중간 어려움도 많았지만, DECK님과 챗GPT 덕분에 완성할 수 있었답니다. 😊

자신감을 얻어 각 쇼핑몰 별 매출 내역 통합에도 도전 해 봤습니다. 아직 진행 중이지만 만드는 과정에서 조금이나마 얻은 것이 있기에 그것을 나누고자 합니다.




[원하는 기능]

  • 각 쇼핑몰 별 매출 파일 다운로드, 하나의 폴더에 모아 두기

  1. 엑셀 VBA 실행, 폴더 선택 창 뜨면 매출 폴더 선택

  2. 매출 파일 불러오기 → 추출 필요한 헤더 값과 원본 파일 비교, 매칭된 값 추출

  3. 무의미한 행(판매수량 0) 삭제

  4. 매출 파일이름 첫 문자와 쇼핑몰 매칭, 판매채널 열에 자동 추가



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기로우코드




4
2개의 답글


👀 지피터스 AI스터디 13기 둘러보기

지피터스 채용

2천만 크리에이터의 원-소스 멀티-유즈 노하우를 함께 실행할 팀원을 찾고 있습니다!

수 백개의 AI 활용법을 발견하는

AI 스터디 13기 모집

⏰ ~10/31(목) 23:59까지

👉 이 게시글도 읽어보세요