복붙 5분을 1분으로 줄이는 주문 관리 MVP 만들기
엑셀 자동화를 검색하면 항상 나오는 단어가 있다.
바로,
VBA, 매크로, 파이썬, RPA
그래서 나는 엑셀로 자동화를 시도해 보려면 아래와 같이 이해를 하고 있었다.
- 자동화 = 내가 모르는 영역이다
- 자동화 = 코드가 필요하구나
- 자동화 = 공부를 많이 해야 할 수 있다
그러다 보니 자연스럽게 손이 가지도 않았고 알고 싶지도 않았다.
업무는 너무나 바쁘고 그것을 적용하는 시간보다 내 손이 더 빨랐다. 몇 시간 영상을 보고 복잡하게 시도하는 것보다 몇십 분의 수기 입력과 복붙, 변환하는 과정이 쉽게 느껴졌다.
그리고 급한 것은 당장 처리해야 할 주문과 눈앞에 쌓이고 있는 아웃룩의 메일과 울리고 있는 전화였다.
지금 돌이켜보면 자동화라는 것을 당시 내 수준에선 버거운 기술의 문제로만 봤던 것이었다.
이번 글은 AI를 쓰거나 자동화 프로그램 등을 사용해서 '자동화 완성'하는 것이 아니라 훨씬 작은 목표로 진행해 보려고 한다. 평소 제조, 무역업 등에서 사용 중인 엑셀에서 주문 관리 업무 중 발주서 생성과 같은 반복되는 업무 '하나'를 실제로 줄여보는 것을 목표로 하고 있다.

엑셀 자동화를 위해, 구조화하고 목표 설정하기
주문이 들어올 때마다 반복하던 업무를 나열해 보자.
내가 했던 주문 관리 업무 프로세스만 따로 놓고 구조화해보니 단순했다.
- 거래처에서 발주서(PO)를 받는다. (문제는 거래처마다 발주서 양식이 다 다르다.)
- 오더 리스트(통합 주문 관리 내역)에 주문 정보를 입력한다.
- 별도 가격 리스트에서 가격과 단가를 확인한다.
- 가격과 단가를 다시 오더 리스트에 수기로 입력한다.
- 그 내역으로 PI(PROFORMA INVOICE)와 PO(PURCHASE ORDER)를 만든다.
- 문서를 바이어와 공장에 송부한다.
※3자 무역 구조
이 흐름은 거의 바뀌지 않았고 다들 이렇게 하고 있었고 나도 관행처럼 받아들였다.
이건 원래 이렇게 하는 거지.
그래서 사실은 자동화라는 것을 떠올릴 생각조차 하지 못했다.
그때는 아예 이런 방법이 있는 줄도 몰랐고 자동화는 뭔가 첨단 공장에서 쓰는 거창한 시스템 같았다.
INPUT/LOGIC/OUTPUT 구조로 생각해 보기
위의 주문 관리 업무를 구조를 나눠보면 아래와 같이 바꿔볼 수 있다.
INPUT(들어오는 것)
- 거래처 발주서 상 정보
- 제품
- 수량
- 그 외 정보(LOT No. 등)
- 오더 리스트에 정보 입력
LOGIC(작업하고 있는 것)
- 제품 별 가격/단가 확인 (조회)
- 수량 x 가격(or 단가) = Amount 계산
- 정해진 위치(PI/PO)에 입력한 값 복사 및 붙여 넣기
OUTPUT(만들어지는 것)
- 번호 발행
- PI/PO 문서
- PDF로 변환된 파일
여기서 중요한 포인트는 LOGIC이 항상 같다는 것이다.
매번 사람이 판단하고 수정하고 조절한다고 생각했지만 실제로는 정해진 규칙을 반복하고 있었던 작업이었다.
MVP 관점에서 자동화 목표 잡기
이번 엑셀 자동화하는 방식은 가장 작은 단위로 만들었다.
흔히, 자동화를 이야기하면 워크플로우나 AI 봇을 떠올리지만 그 단계로 가기 전에도 먼저 할 수 있는 방법이 있다. 간단하게 사람 손이 한 번이라도 덜 가게 하는 방법이다.
자동화란?
기술과 시스템을 활용해 사람의 개입을 최소화하면서 반복적이고 수동적인 작업을 스스로 수행하도록 만드는 프로세스
그래서 이번 엑셀 자동화 MVP는 '가장 먼저 줄여야 할 반복 하나'를 줄이는 것을 목표로 삼았다.
위에서 나눈 업무 중 시간이 많이 소모되면서 사람 개입이 필요하지 않는 작업 하나를 없애는 것을 목표로 잡게 되었다.
해당 업무를 선정한 이유는 입력하는 단계 시 이미 사람이 개입하여 가격 등 필수 정보와 오류는 검증을 한 후, 입력을 하고 같은 값을 복사하여 동일 문서에 붙여 넣는 작업이기에 자동화를 해야 할 우선순위 업무에 가장 적합한 업무였다.
실습 준비물
- 시트 구성(한 파일 안에서 진행)
- Order_List : 원본 주문 데이터(저는 더미 생성하여 진행하였습니다.)
- PO_Template : PO 문서 템플릿
- PI_Template : PI 문서 템플릿
- Order_List 칼럼 구조(A열~)
- Season | Date | PO | PI | Customer | STYLE | ITEM_CODE | ITEM | SIZE | COLOR | QTY | PRICE | PRICE_AMOUNT | COST | COST_AMOUNT | FACTORY

엑셀 자동화 MVP 만들기
Step 0. Order List를 '표(테이블)'로 만들기(1분)
표로 만드는 이유는 두 가지인데
- 데이터 범위가 자동으로 늘어나서 다음에 데이터를 입력해도 수십 범위를 고치지 않아도 된다.
- '표 이름'으로 관리가 돼서 나중에 유지 보수가 쉽다.
만드는 방법
1) Order_List 시트에서 데이터 범위 전체 선택 (보통 A열과 1행 사이의 삼각형을 누르면 전체 선택이 된다)
2) Ctrl + T
3) 머리글 포함 체크 ✅ → 확인
4) 테이블 디자인에서 표 이름을 tborder로 변경
하지만, 오늘 사용한 수식은 설명을 단순하게 하기 위해서 '열'을 참고하는 방식으로 진행한다.

Step 1. 연결 테스트 진행하기(이 단계가 거의 반 이상이다!)
수식을 잘 쓰는 것보다 중요한 것은 조건이 제대로 실행되는지 확인하는 것이다.
GPT나 Gemini, 코파일럿 등을 이용해서 내 화면과 하고 싶은 것을 설명하면 수식은 금방 잘 작성해 준다. 그래서 이걸 실제 넣고 작동하는지 '연결 테스트'를 하는 것이 중요하다.
1) PO_template에서 PO 번호를 입력할 셀을 정한다.(B3)

2) PO가 잡히는지 확인해야 한다.
- PO_Template의 빈 셀에 아래 수식을 입력하고 값이 여러 줄 쭉 나오면 성공이다.
=FILTER(Order_List!$C:$C, Order_List!$C:$C=$B$3)Order_List 시트의 C열(PO 목록) 중 PO_Template의 B3에 적힌 PO 번호와 같은 것만 골라서 보여줘
3) PO 번호 하나에 한 줄만 가져오는 정보인 날짜, Buyer 와 같은 정보는 XLOOKUP을 사용해서 가져온다.
=XLOOKUP($B$3, Order_List!$C:$C, Order_List!$B:B, "")Order_List 시트의 C열에서 PO_Template의 B3에 적힌 PO번호 찾아서 같은 행에 있는 B열 값 하나 보여줘
여러 줄짜리 = 필터(FILTER)

Step 2. 템플릿 라인에 ‘1줄씩’ 채우기
이제 불러온 PO에 해당하는 열마다 데이터를 불러와야 한다.
STYLE은 STYLE 번호를, ITEM 이면 ITEM, 숫자 면 각각의 숫자 데이터를 말이다. 먼저 STYLE을 부분에 아래 수식을 넣어두고 아래 행을 채우기를 실행했을 때 해당하는 번호로 채워진다면 연결은 확인된 것이다.
=IFERROR(
INDEX(
FILTER(Order_List!$F:$F, Order_List!$C:$C=$B$3),
ROW(A1)
),
""
)Order_List 시트의 F열(STYLE 목록) 중 PO_Template의 B3에 적힌 PO 번호와 같은 행의 데이터를 보여줘
- ROW(A1) → 1(첫 번째 품목)
- 아래로 드래그를 하면 2, 3, 4... 가 되어 순서대로 채워짐
- 남는 줄은 IFERROR로 빈칸 처리가 되어 문서가 깨끗하게 된다.
행에 모두 수식 적용 후 데이터 채워보기
Step 3. 옆 칸으로 확장한다(열만 바꾸면 끝난다)
- 예를 들어 ITEM(H 열의 경우)
=IFERROR(
INDEX(
FILTER(Order_List!$H:$H, Order_List!$C:$C=$B$3),
ROW(A1)
),
""
)
- UNIT COST(N열)
=IFERROR(
INDEX(
FILTER(Order_List!$N:$N, Order_List!$C:$C=$B$3),
ROW(A1)
),
""
)
- AMOUNT(US$) 경우에는 QTY × UNIT COST
=IFERROR(QTY셀*UNITCOST셀, "")Step 4. PI_Template도 동일하게 적용하기
PI_Template에도 위의 연결 테스트부터 동일하게 진행해 주면 된다.
대신 PI에는 UNIT COST 대신 UNIT PRICE 단가로 (PRICE 열이고 L열) 넣으면 된다.
- PO_Template: COST(N열) 중심
- PI_Template: PRICE(L열) 중심
PI_Template 함수 적용
(보너스) PDF 저장 '딸깍' 버튼 만들기
위의 단계까지 하면 MVP는 끝이 난다. 하지만 저장까지 딸각하게 되면 실무 체감이 확 올라갈 수 있을 것 같아 버튼으로 저장할 수 있는 방법을 만들어 봤다.
- PO_Template → PO_PO No.pdf
- PI_Template → PI_PI No.pdf
- 저장 위치: 엑셀 파일이 저장된 폴더
'==============================
' PO PDF 저장
'==============================
Sub Save_PO_as_PDF()
Dim ws As Worksheet
Dim poNo As String
Dim fileName As String
Dim savePath As String
Set ws = Worksheets("PO_Template")
poNo = ws.Range("B3").Value
savePath = ThisWorkbook.Path & "\"
fileName = "PO_" & poNo & ".pdf"
ws.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=savePath & fileName, _
Quality:=xlQualityStandard
MsgBox "PO PDF 저장 완료!" & vbCrLf & fileName
End Sub
'==============================
' PI PDF 저장
'==============================
Sub Save_PI_as_PDF()
Dim ws As Worksheet
Dim piNo As String
Dim fileName As String
Dim savePath As String
Set ws = Worksheets("PI_Template")
piNo = ws.Range("B3").Value
savePath = ThisWorkbook.Path & "\"
fileName = "PI_" & piNo & ".pdf"
ws.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=savePath & fileName, _
Quality:=xlQualityStandard
MsgBox "PI PDF 저장 완료!" & vbCrLf & fileName
End Sub
엑셀 vba 코드로 End Sub 기준으로 따로 모듈 1개 씩 만들어서 적용하면 된다.

버튼 생성 : 개발 도구 → 삽입 → 버튼 → 모듈 연결 → 클릭
이 구조가 자동화의 최소 단위(MVP)인 이유는
이번 실습을 하고 나면 엑셀 기능을 배웠다는 것보다 먼저 체감되는 변화가 있다.
- 매번 반복했던 복사하고 붙여 넣는 일
- 문서를 새로 만드는 일이
이 과정들이 줄어들게 된다. 결국, 주문 내역 입력 → 문서 완성이라는 결과를 확인할 수 있게 된다. 그리고 이 변화는 한 번은 작아 보여도 업무가 반복될수록 시간을 누적해서 크게 아낄 수 있게 만든다.

그리고 우리는 '매번 반복하던 업무'라는 구체적인 문제에서 출발했다.
- 지금 내가 하고 있는 업무 기준에서
- 내가 이해할 수 있는 환경에서 시작했고
- 실패해도 고칠 수 있는 단위로 접근했다.
그래서 엑셀에서 끝나도 쓸 수 있고 실제 업무에서도 효율이 생기고 정착이 되면 그때 다음을 고민하면 된다. 이미 사용했던 구조이기에 나중에 기능 하나를 추가하거나 범위를 확장하는 선택도 가능해진다.
실제로 많은 실무 업무에서는 이 정도의 자동화로도 충분한 변화가 생긴다.
위) 엑셀 자동화 MVP_PDF 변환 및 확인까지 완료 / 아래) 엑셀 수기 작업 시_복붙만 가능 / 속도 비교
같은 구조로 구글 환경에서 해보면 무엇이 달라질까?
같은 구조를 구글 환경인 구글 시트로 옮기면 선택지가 조금 달라진다.
- 클라우드라는 환경 덕분에 여러 사람이 동시에 같은 문서를 볼 수 있고
- 최신 버전을 따로 전달하지 않아도 된다.
- 그리고 App Script라는 기능을 붙이면
- PDF 저장
- Gmail과 연동하여 메일 발송
- 폴더 자동 정리
같은 동작도 가능해 진다.
다만, 지금 단계에서 반드시 구글로 갈 필요는 없다는 것이다. 지금 업무 환경에 따라서 아직 엑셀을 많이 사용하는 환경이면 엑셀에서 구글 환경을 더 많이 이용하는 업무라면 구글에서 자동화할 수 있는 방법을 찾아보자는 것이다.
가장 중요한 것은 내가 지금 하고 있는 업무를 나눠보고, 먼저 줄일 수 있는 경험을 만드는 것이다.
오늘의 ACTION ITEM
‘내 업무 1개’로 15분 자동화 기획하기
- 1편에서 나눠본 INPUT–LOGIC–OUTPUT 중에서, 가장 자주 반복되는 업무 1개를 고른다.
- 그리고 아래 기준으로 엑셀에서 MVP를 1회만 만들어본다.
- 선택 기준 (1분)
- 매일 또는 매주 반복된다
- 복사·붙여넣기 / 조회 / 계산이 포함되어 있다
- 결과물이 문서·리포트·메일 초안처럼 형태가 있다
- MVP 범위 (5~15분)
- INPUT: 입력 칸 3개만 만든다
(예: 고객 / 품목 / 수량) - LOGIC: 규칙 3개만 고정한다
(예: 단가 조회, 금액 계산, 합계) - OUTPUT: 결과물 1개를
‘자동으로 채워지게’ 만든다 (템플릿 1장)
- INPUT: 입력 칸 3개만 만든다
- 시간 체크 (1분)
- 기존 방식으로 1건 처리 시간: __분
- MVP로 1건 처리 시간: __분
- 줄어든 구간(체감 변화 1줄):
복붙 제거 / 조회 제거 / 계산 제거 / 저장 단축 중 무엇이었나
이번 엑셀 자동화 MVP 목표였던 복사-붙여 넣기를 없애는 것을 통해 약 86% 리소스를 절감하는 효과를 얻게 되었다.
- 기본 방식으로 1건 처리 시간 : 약 3분 35분
- MVP로 1건 처리 시간 : 약 30초
- 줄어든 구간은 복붙 제거
업무가 달라도 가능하다. 중요한 건 “귀찮은 일이 1건 줄었는지”를 확인해 보는 것이다.
다음 편에서는 이 엑셀 구조를 그대로 가져가 구글 환경에서 할 수 있는 자동화를 해볼 예정이다.