VB(A)/당근쨈 & Chronicle

[& Chronicle] 지정기간의 합 구하기

당근쨈 2019. 2. 22. 18:56

https://cafe.naver.com/excelmaster/160457에 올라온 질문입니다.


워크시트 함수인 EoMonth 함수를 사용하여

3개월 전의 첫날, 1개월 전의 마지막날을 구하여 그 사이에 있는 기간의 출고수량을 구하면 됩니다.


Chronicle님은 아래와 같이 풀었습니다.

https://blog.naver.com/asaph16/221472345497

풀이 과정은 같지만 이런 건 함수가 훨씬 간단하네요.


재고 관리.xlsm


Option Base 1
Option Explicit
 
Sub Macro()
 
    Dim vAll, vDate
    Dim i As Integer
    Dim LastInput As Date
    Dim StartDay As Date
    Dim LastDay As Date
    Dim SumOutput As Long
    Dim wkF As WorksheetFunction
    
    Set wkF = WorksheetFunction
    With Range("A1").CurrentRegion
        vAll = .Offset(1).Resize(.Rows.Count - 1)
        vDate = wkF.Transpose(.Columns(1).Offset(1).SpecialCells(2))
    End With
    
    With wkF
        LastInput = .Max(vDate)
        StartDay = .EoMonth(LastInput, -4+ 1
        LastDay = .EoMonth(LastInput, -1)
    End With
    
    For i = 1 To UBound(vDate)
        If vDate(i) >= StartDay Then
            If vDate(i) <= LastDay Then
                SumOutput = SumOutput + vAll(i, 4)
            End If
        End If
    Next
    
    Range("H1"= SumOutput
    
End Sub
cs