오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴
엑셀 고급 강의

엑셀 재고관리의 모든것 2편 - 선입선출 관리

오빠두엑셀 by 오빠두엑셀
  • 학습시간 36분
  • 난이도 중급
  • 작성일 2021.01.20

엑셀 함수만 사용하는 재고 선입선출 관리방법에 대해 선입선출 계산 원리부터 실전 응용예제까지 단계별로 알아봅니다.

이 강의에서는 엑셀 함수만 사용해 선입선출(FIFO) 방식의 재고관리 시트를 구축하는 방법을 다룹니다. 박스 단위로 입고된 데이터를 기준으로 MIN·SUMIF 함수를 활용한 출고수량 계산 공식과 FILTER 함수를 이용한 기말재고 필터링 방법까지, 별도의 프로그램 없이 엑셀에서 바로 적용할 수 있는 실전 구성을 단계별로 알아봅니다.

엑셀 재고관리의 모든것 2편 - 선입선출 관리
DOWNLOADS

실습자료를 준비했어요

수업에서 사용한 예제 파일과 보충 자료를 한 곳에 정리했습니다!👇

실습 가이드
.

라이브 강의 전체영상도 함께 확인해보세요!

오빠두엑셀 LIVE 강의는 매주 토요일 저녁 9시에 진행합니다.


물류는 예측 불가능한 변수가 수시로 발생하는 분야입니다. 그러다 보니 선입선출 재고관리는 엑셀뿐 아니라 다른 전문 솔루션을 사용하더라도 100% 완벽하게 자동화하기가 현실적으로 어려운 영역입니다.

선입선출 재고관리를 제대로 적용하려면, 데이터를 기록하기 이전에 현실 운영에서 반드시 지켜져야 할 한 가지 규칙이 있습니다. 그것은 바로,

'박스단위 관리'

입니다. 동일한 제품이 여러 개의 박스로 나뉘어 입고되었다면, '스커트=200개'처럼 묶어서 입력하지 않고 '박스1=50개, 박스2=50개, 박스3=50개, 박스4=50개'와 같이 박스 단위로 데이터를 분리해 입력해야 합니다.

재고 선입선출 박스단위 관리

엑셀의 가장 큰 장점은 누구나 데이터를 손쉽게 가공할 수 있다는 점입니다. 따라서 선입선출의 계산 원리를 이해하고 박스 단위로 재고를 입력할 환경만 갖춰져 있다면, 별도의 프로그램 없이 함수만으로도 충분히 선입선출 재고관리를 구현할 수 있습니다.

다만 함수만 사용하는 경우 완벽한 자동화에는 한계가 있습니다. 따라서 선입선출 재고관리를 적용하기 전에 다음 두 가지 조건을 먼저 확인해야 합니다.

  1. 출고원가를 건별로 추적하지 않고 특정 기간 단위로 묶어 관리해도 무방한 경우
  2. 예외상황이 자주 발생하지 않으며, 예외상황이 생기더라도 별도의 시트에서 분리해 관리해도 괜찮은 경우

위 두 조건을 모두 만족한다면, 엑셀 함수만으로도 안정적인 선입선출 재고관리를 구축할 수 있습니다.

선입선출 재고관리의 계산 원리는 의외로 단순합니다. 한 가지 핵심 개념만 기억하면 됩니다. 그것은 바로,

'출고수량'

입니다. 선입선출 방식으로 계산하는 출고수량의 기본 공식은 다음과 같습니다.

= MIN ( 현재 박스수량, (총 판매수량 - 이전 입고수량) )

공식의 동작 원리는 아래 표를 참고하면 직관적으로 이해할 수 있습니다. 예시는 1월 7일까지 총 450개의 재고가 입고되고, 그 중 101개가 판매된 상황입니다. 이 경우 출고수량은 다음과 같이 계산됩니다.

입고일 입고(현재박스)
[A]
총판매-이전입고
[B]
출고수량
[A,B 중 작은값]
1월 1일 50 101-0 = 101 50
1월 2일 100 101-50 = 51 51
1월 3일 50 101-150 = -49 (0) -
1월 4일 100 ... (0) -
1월 5일 50 ... (0) -
1월 6일 100 ... (0) -
합계 450 - 101

이어서 1월 7일에 50개가 추가로 입고되고, 누적 240개가 판매된 상황에서는 출고수량이 다음과 같이 계산됩니다.

입고일 입고(현재박스)
[A]
총판매-이전입고
[B]
출고수량
[A,B 중 작은값]
1월 1일 0 - -
1월 2일 49 240-0 = 240 49
1월 3일 50 240-49 = 191 50
1월 4일 100 240-99 = 141 100
1월 5일 50 240-199 = 41 41
1월 6일 100 240-249 = -9 (0) -
1월 7일 50 ... (0) -
합계 399 - 240

선입선출 재고관리의 계산 원리는 이처럼 어렵지 않습니다. 이제 예제파일을 활용해 실제로 시트를 구축하는 단계를 차례대로 살펴보겠습니다.

예제파일의 [3]번 시트에는 한 개 제품을 선입선출로 관리하기 위한 데이터가 정리되어 있습니다. 이번 강의에서는 이해를 돕기 위해 제품이 한 개인 단순한 사례를 기준으로 설명합니다.

제품이 여러 개인 경우에는 수식의 SUMIF 함수를 SUMIFS 함수로 변경하고, 계산 조건에 '제품명'만 추가해주면 됩니다. 계산 원리만 정확히 이해하고 있다면 누구나 어렵지 않게 선입선출 재고관리 시트를 만들 수 있습니다.

제품명뿐 아니라 색상, 크기 등 다양한 속성도 SUMIFS 함수의 조건으로 추가하면, 동일한 방식으로 손쉽게 선입선출 재고관리를 확장할 수 있습니다.

1. 선입선출 출고수량 계산하기
  1. 예제파일의 [3] 시트로 이동합니다. 시트는 '입고', '판매', '출고', '잔여(기말재고)' 총 4개의 영역으로 구분되어 있습니다.

    선입선출 재고관리 파일

  2. 예제파일의 6행과 8행 사이에 얇은 선이 보입니다. 마우스로 두 행의 간격을 넓혀 7행이 표시되도록 조정해주세요. (시트 작업이 끝난 뒤에는 7행을 다시 숨겨도 무방합니다.)

    7행 높이 조절

  3. K8셀(출고내역의 Box)을 선택한 뒤, 같은 위치의 구매내역 Box 정보를 그대로 불러오도록 수식을 입력합니다. 입력한 수식은 단가까지 오른쪽으로 자동채우기 한 다음, 아래 방향으로도 자동채우기 합니다.

    출고내역 값 입력

  4. 아래 수식을 복사해 예제파일의 N8셀에 붙여넣기 합니다. 이후 수식을 아래 방향으로 자동채우기 합니다. 공식의 동작 원리는 영상 강의에서 자세히 설명해드렸습니다.
    =MIN(E8,IF($I$6-SUMIF(C:C,"<"&L8,E:E)-SUMIF($L$7:L7,L8,$N$7:N7)<0,0,$I$6-SUMIF(C:C,"<"&L8,E:E)-SUMIF($L$7:L7,L8,$N$7:N7)))

    엑셀 선입선출 공식 입력

  5. O8셀(금액)은 단가 × 수량으로 계산합니다. O8셀에 아래 수식을 입력한 후 아래 방향으로 자동채우기 합니다.
    =M8*N8

    출고내역 금액 계산

  6. 여기까지 진행하면 선입선출 출고수량 계산이 완료됩니다.

    엑셀 선입선출 출고내역 완성

2. 기말재고 계산하기
  1. Q8셀(기말재고의 Box)을 선택한 뒤, 같은 위치의 구매내역 Box 정보를 불러오도록 수식을 입력합니다. 출고내역과 동일한 방식으로 수식을 자동채우기 합니다.

    기말재고 값 입력

  2. 기말재고 수량은 [구매수량 − 출고수량]으로 산출됩니다. 예제파일 T8셀에 아래 수식을 입력한 뒤 아래 방향으로 자동채우기 합니다.
    =E8-N8

    기말재고 수량 입력

  3. 금액은 단가 × 수량으로 계산합니다. U8셀에 아래 수식을 입력한 다음 아래 방향으로 자동채우기 하여 기말재고 계산을 마무리합니다.
    =T8*S8

    기말재고 금액 계산

3. 현재 보관중인 기말재고만 출력하기

'구매수량 − 출고수량'으로 기말재고를 계산하면 수량이 0인 항목까지 함께 표시됩니다. 따라서 실제로 보관 중인 수량만 출력하도록 기말재고_필터 범위를 별도로 구성합니다. MS365 버전을 사용 중이라면 FILTER 함수로 간단히 처리할 수 있고, 365 이전 버전에서는 VLOOKUP 여러 개 값 불러오기 공식을 활용합니다. 두 방법에 대한 자세한 설명은 아래 링크를 참고해주세요.

FILTER 함수를 사용하는 방법 (365 버전)

  1. 아래 수식을 복사해 예제파일의 W8셀에 붙여넣으면 기말재고 중 수량이 0보다 큰 항목, 즉 현재 보관 중인 재고만 자동으로 필터링됩니다.
    =FILTER(Q8:U23,T8:T23>0)

    기말재고 보유중 재고 필터링

VLOOKUP 여러개 값 불러오기 공식을 사용하는 방법 (365 이전 버전)

  1. 아래 수식을 복사해 예제파일의 AC8셀에 붙여넣기 합니다. 해당 수식은 배열수식이므로 반드시 CTRL + SHIFT + ENTER로 입력해야 한다는 점에 유의합니다.
    =IFERROR(INDEX($Q$8:$U$16, SMALL(IF(($T$8:$T$16>0),MATCH(ROW($Q$8:$U$16), ROW($Q$8:$U$16)), ""), ROWS($A$1:A1)), COLUMNS($A$1:A1)),"")

    기말재고 보유중인 재고 365 이전

  2. 붙여넣은 수식을 너비에 맞춰 오른쪽과 아래 방향으로 자동채우기 하면, 현재 보관 중인 수량만 필터링되어 표시됩니다. 다만 해당 수식은 배열수식이므로 넓은 범위에 적용할 경우 파일의 처리 속도가 느려질 수 있습니다.

    엑셀 현재 보유중 재고 필터링 완료

엑셀 매크로를 활용하면 재고관리를 한층 더 편리하게 자동화할 수 있습니다. 이번 강의 예제파일에 포함된 매크로는 다음 절차로 확인할 수 있습니다.

  1. 예제파일을 실행한 뒤, [개발도구] - [Visual Basic] 버튼을 클릭하거나 단축키 ALT + F11로 매크로 편집기를 실행합니다. 만약 [개발도구] 탭이 보이지 않는다면, 아래 포스트를 참고해 활성화 방법을 확인해주세요.

    개발도구 visual basic 이동

  2. 매크로 편집기에서 [폼] - [UserForm1]을 선택합니다. 유저폼을 더블클릭하면 해당 폼에 작성된 매크로 코드를 확인할 수 있습니다.

    엑셀 재고관리 명령문 확인

  3. 유저폼에 사용된 전체 명령문은 다음과 같습니다.
    Option Explicit
     
    Private Sub btnAdd_Click()
     
    Dim i As Long: Dim j As Long
    Dim db As Variant: Dim x As Long
     
    If Me.lst3.ListIndex <> -1 Then
        Me.lst2.AddItem lst3.List(Me.lst3.ListIndex, 0)
        For i = 1 To 4
            With Me.lst2
                .List(.ListCount - 1, i) = Me.lst3.List(Me.lst3.ListIndex, i)
            End With
        Next
     
        ReDim db(0 To Me.lst1.ListCount - 1, 0 To 4)
        For i = 0 To Me.lst1.ListCount - 1
            For j = 0 To 4
                db(i, j) = Me.lst1.List(i, j)
            Next
        Next
     
        x = Get_ListRecord(db, 0, Me.lst3.List(Me.lst3.ListIndex, 0))
        Me.lst1.RemoveItem (x)
        Me.lst3.RemoveItem (Me.lst3.ListIndex)
    End If
     
    End Sub
     
    Private Sub btnRemove_Click()
     
    Dim i As Long
     
    If Me.lst2.ListIndex <> -1 Then
        Me.lst1.AddItem lst2.List(Me.lst2.ListIndex, 0)
        Me.lst3.AddItem lst2.List(Me.lst2.ListIndex, 0)
        For i = 1 To 4
            With Me.lst1
                .List(.ListCount - 1, i) = Me.lst2.List(Me.lst2.ListIndex, i)
            End With
            With Me.lst3
                .List(.ListCount - 1, i) = Me.lst2.List(Me.lst2.ListIndex, i)
            End With
        Next
     
        Me.lst2.RemoveItem (lst2.ListIndex)
    End If
     
    End Sub
     
    Private Sub btnSubmit_Click()
     
    Dim i As Long: Dim j As Long: Dim x As Long
    Dim vbyn As VbMsgBoxResult
     
    vbyn = MsgBox("출고 등록하시겠습니까", vbYesNo)
    If vbyn = vbYes Then
        With Sheet6
            .Range("I4:M15").ClearContents
        End With
     
        x = 4
        For i = 0 To Me.lst2.ListCount - 1
            For j = 0 To 4
                With Sheet6
                    .Cells(x, j + 9) = lst2.List(i, j)
                End With
            Next
            x = x + 1
        Next
        Unload Me
    End If
     
    End Sub
     
    Private Sub lst3_Click()
     
    If Me.lst2.ListIndex <> -1 Then Me.lst2.Selected(Me.lst2.ListIndex) = False
     
    End Sub
     
    Private Sub lst2_Click()
     
    If Me.lst3.ListIndex <> -1 Then Me.lst3.Selected(Me.lst3.ListIndex) = False
     
    End Sub
     
    Private Sub txtFilter_Change()
     
    Dim db As Variant
    Dim i As Long: Dim j As Long
    ReDim db(0 To lst1.ListCount - 1, 0 To 4)
     
    For i = 0 To Me.lst1.ListCount - 1
        For j = 0 To 4
            db(i, j) = Me.lst1.List(i, j)
        Next
    Next
     
    db = Filtered_DB(db, Me.txtFilter.Value)
     
    Me.lst3.Clear
    If Not IsEmpty(db) Then Me.lst3.List = db
     
    End Sub
     
    Private Sub UserForm_Initialize()
     
    Dim rng As Range
    Dim db As Variant
     
    With Sheet6
        Set rng = .Range(.Cells(4, 3), .Cells(.Cells(.Rows.Count, 3).End(xlUp).Row, 8))
    End With
     
    db = rng
     
    With Me.lst1
        .ColumnCount = 5
        .ColumnWidths = "0pt;70pt;60pt;60pt;50pt"
        .List = db
    End With
     
    With Me.lst3
        .ColumnCount = 5
        .ColumnWidths = "0pt;70pt;60pt;60pt;50pt"
        .List = db
    End With
     
    With Me.lst2
        .ColumnCount = 5
        .ColumnWidths = "0pt;70pt;60pt;60pt;50pt"
    End With
     
    End Sub
     
    Function Get_ListRecord(db, ListIndex, Value) As Long
     
    Dim i As Long
     
    For i = LBound(db, 1) To UBound(db, 1)
        If db(i, ListIndex) = Value Then Get_ListRecord = i: Exit Function
    Next
     
    End Function
    Function Filtered_DB(db, Value, Optional ExactMatch As Boolean = False) As Variant
     
    Dim cRow As Long
    Dim cCol As Long
    Dim vArr As Variant: Dim s As String
    Dim vReturn As Variant: Dim vResult As Variant
    Dim Dict As Dictionary: Dim dictKey As Variant
    Dim i As Long: Dim j As Long: Dim x As Long
     
    Set Dict = New Dictionary
     
    If Value <> "" Then
        cRow = UBound(db, 1)
        cCol = UBound(db, 2)
        ReDim vArr(LBound(db, 1) To cRow)
        For i = LBound(db, 1) To cRow
            s = ""
            For j = LBound(db, 2) To cCol
                s = s & db(i, j) & "|^"
            Next
            vArr(i) = s
        Next
     
        If ExactMatch = False Then
            For i = LBound(db, 1) To cRow
                If InStr(1, vArr(i), Value) > 0 Then
                    vArr(i) = Left(vArr(i), Len(vArr(i)) - 2)
                    vReturn = Split(vArr(i), "|^")
                    Dict.Add i, vReturn
                End If
            Next
        Else
            For i = LBound(db, 1) To cRow
                If vArr(i) = Value & "|^" Then
                    vArr(i) = Left(vArr(i), Len(vArr(i)) - 2)
                    vReturn = Split(vArr(i), "|^")
                    Dict.Add i, vReturn
                End If
            Next
        End If
     
        If Dict.Count > 0 Then
            ReDim vResult(LBound(db, 1) To Dict.Count, LBound(db, 2) To cCol)
            i = LBound(db, 1)
            For Each dictKey In Dict.Keys
                x = 0
                For j = LBound(db, 2) To cCol
                    vResult(i, j) = Dict(dictKey)(x)
                    x = x + 1
                Next
                i = i + 1
            Next
        End If
     
        Filtered_DB = vResult
    Else
        Filtered_DB = db
    End If
     
    End Function
     
    '커서 이동시 버튼 색깔을 변경하는 보조명령문을 유저폼에 추가합니다.
    Private Sub OnHover_Css(lbl As Control): With lbl:   .BackColor = RGB(211, 240, 224):    .BorderColor = RGB(134, 191, 160): End With: End Sub
     
    Private Sub OutHover_Css(lbl As Control): With lbl:   .BackColor = &H8000000E:    .BorderColor = &H8000000A: End With: End Sub
     
    '유저폼에 추가한 버튼에 개수만큼 아래 명령문을 유저폼에 추가한 뒤, btnAdd를 버튼 이름으로 변경합니다.
    Private Sub btnAdd_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    OutHover_Css Me.btnAdd
    End Sub
     
    Private Sub btnAdd_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single)
    OnHover_Css Me.btnAdd
    End Sub
     
    '유저폼에 추가한 버튼에 개수만큼 아래 명령문을 유저폼에 추가한 뒤, btnRemove를 버튼 이름으로 변경합니다.
    Private Sub btnRemove_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    OutHover_Css Me.btnRemove
    End Sub
     
    Private Sub btnRemove_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single)
    OnHover_Css Me.btnRemove
    End Sub
     
    '유저폼에 추가한 버튼에 개수만큼 아래 명령문을 유저폼에 추가한 뒤, btnSubmit를 버튼 이름으로 변경합니다.
    Private Sub btnSubmit_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    OutHover_Css Me.btnSubmit
    End Sub
     
    Private Sub btnSubmit_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single)
    OnHover_Css Me.btnSubmit
    End Sub
     
    '아래 코드를 유저폼에 추가한 뒤, "btnXXX, btnYYY"를 버튼이름을 쉼표로 구분한 값으로 변경합니다.
    Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single)
    Dim ctl As Control
    Dim btnList As String: btnList = "btnAdd, btnRemove, btnSubmit" ' 버튼 이름을 쉼표로 구분하여 입력하세요.
    Dim vLists As Variant: Dim vList As Variant
    If InStr(1, btnList, ",") > 0 Then vLists = Split(btnList, ",") Else vLists = Array(btnList)
    For Each ctl In Me.Controls
        For Each vList In vLists
            If InStr(1, ctl.Name, Trim(vList)) > 0 Then OutHover_Css ctl
        Next
    Next
    End Sub
  4. 엑셀 매크로를 활용한 재고관리 프로그램 만들기는 라이브 강의에서 총 5강으로 나누어 자세히 다뤘습니다. 관련 라이브 강의는 아래 링크에서 확인해주세요.
댓글 26
5 (17개 평가)
jhdy****
jhdy**** 2021.01.21 06:49
한셀을 쓰고 있는데요
한셀은 VBA 명령가 틀리죠?
부대라 한셀만 사용해서ㅡㅡ
혹시 틀린 명령어가 어떤게 틀린지궁금합니다.
오빠두엑셀
오빠두엑셀 작성자 2021.01.21 15:52
안녕하세요.
아쉽게도, 한셀은 VBA를 지원하지 않아 매크로 사용이 불가능합니다.
유령회원
유령회원 2021.02.08 13:07
선입선출 예제파일 (시트2) 에 있는 VBA에 대해서 더 알고 싶은데요. 관련 영상은 어디서 볼수 있을까요 ?
오빠두엑셀
오빠두엑셀 작성자 2021.02.10 15:55
아래 재고관리 프로그램 만들기 강의를 확인해보세요.
https://www.oppadu.com/%ec%97%91%ec%85%80-live-30%ea%b0%95/
난너야
난너야 2021.02.08 14:32
하루에 하나씩 열심히 배우고 있습니다.
감사합니다
정이사랑
정이사랑 2021.04.27 13:35
유저폼까지 한번에 강의해 주시면 좋을 것 같네요. 어째든 열심히 찾아보고 있습니다. 감사합니다.
James
James 2021.07.22 09:01
안녕하세요. 혹시 주식 처럼 구입(매입)단가와 판매(매도) 단가가 달라지는 경우도 가능할까요?
항상 감사드립니다.
오빠두엑셀
오빠두엑셀 작성자 2021.07.23 08:59
안녕하세요.
공매도 성격의 거래를 제외하고, 매일 거래하는 입고(매수), 출고(매도) 내역을 입/출고 내역형태로 관리하신다면 가능합니다.
이주혁
이주혁 2021.09.18 11:28
최고네요
애기빛
애기빛 2021.12.13 04:08
오늘 가입한 엑셀병아리입니다.
거래처에서 월 별로 입금이 되는데, 간혹 일부금액만 보내오는 경우가 있어서 월단위 미수금 파악하는 데에 어려움이 있었습니다.
이 게시물을 보다가 딱 이거다 싶어서 밤부터 씨름해서 기본포맷 완성했습니다. 고맙습니다.
양식 좀 더 가다듬고 입금내역까지 입력해서 오빠 보여주면 좋아하겠는......데
....
새벽 4시네요 ㅠㅠ. 두시간 반의 꿀잠 go go~
싼티나
싼티나 2022.01.09 10:22
데이타가 한달에 5000~10,000건 정도 쌓입니다.
이렇게 되면 엑셀이 많이 버벅 되더라고요.
그렇다고 엑세스 같은 다른 프로그램을 다시 배워서 쓰긴 그렇구요.
해결 방법이 있을까요???
오빠두엑셀
오빠두엑셀 작성자 2022.01.10 16:59
싼티나님 안녕하세요.
열 개수에 따라 다르겠지만, 5,000 ~ 10,000 건의 데이터는 그렇게 많은 양이 아니여서, 엑셀에 많이 버벅인다면 파일에 사용된 서식/함수 또는 PC사양이 문제가 아닐까 생각됩니다.
이선희
이선희 2022.02.18 09:08
안녕하세요!!
혹시 판매일별로 수량당 선입선출로 판매될 원단가도 알수 있을까요???
예를들어 아래처럼 각각 구하고싶어서 문의드립니다ㅜㅜ
<입고>
4/21 - 7,500원 748개
4/21 - 7,460원 1,000개

<출고>
5/6 - 402개 (선입선출판매의 단가)
5/6 - 640개 (선입선출판매의 단가)
오빠두엑셀
오빠두엑셀 작성자 2022.02.22 00:47
강의에서 소개해드린 내용을 적용하면 해결하실 수 있습니다.^^
15:03 부터 한번 확인해보세요.
고
2023.06.11 17:39
저도 이게 궁금합니다
안내해주신 영상내용에는 출고되는 재고의 단가까지는 나와있지 않은데 단가를 구하고 싶으면 어떤하수를 사용해야 할까요?
하이대디
하이대디 2023.01.06 17:10
좋은 자료 너무 감사합니다~ 언제나 도움 받으면서 데이터 만들고 있는데
혹시 박스번호를 고정 시킬 수 있는 방법이 있을까요?
만들려는 데이터가 로트 관리가 중점이라 작업현황에 출고되는 로트번호, 출고수량을 기재하는데 BOX001을 여러 번에 걸쳐 다 소진하고
BOX002로 로트가 넘어갈 때 이전 로트 번호에 BOX001 고정되고 BOX002로 넘어가는 방법을 알고 싶어요
ㅠㅠ 좀 쓰다 보니 정신이 없네요;;;
오빠두엑셀
오빠두엑셀 작성자 2023.01.07 11:40
안녕하세요.
박스에 LOT까지 관리하려면 입고, 출고 영역에서 모두 LOT+박스로 관리해야 합니다.
만약 입고시에만 LOT과 박스번호를 잡고, 출고시 순차적으로 LOT을 매기는 방법으로 관리한다면 강의에서 소개한 내용을 적용할 수 있지만, 그럴 경우 항상 재고가 순차적으로 나간다는 보장이 없기 때문에 문제가 발생할 수 있습니다.
따라서 현업에서는 출고시 LOT의 QR 코드와, 박스의 QR 코드를 한번씩 번갈아 찍어서 출고를 잡는 방법으로 관리하는 경우가 많습니다. 이 방법을 고려하시는게 좋지 않을까 생각됩니다.^^