월말 계산 (Microsoft Excel)
Kim은 시작 날짜 (C 열)와 종료 날짜 (D 열)를 입력하는 워크 시트를 가지고 있습니다. 그녀는 두 날짜 사이의 월말 수를 계산하는 방법이 필요합니다. 예를 들어 시작일이 1/1/17이고 종료일이 7/31/17이면 월 종료 수는 7입니다. 그러나 종료 날짜가 7/30/17이면 월 수 끝은 6입니다.
적절한 개수를 계산하기 위해 고안 할 수있는 공식은 얼마든지 있습니다. 가장 간단한 공식은 C 열의 날짜를 항상 한 달의 시작이라고 생각하는 것입니다. 이 경우 다음 공식이 잘 작동합니다.
=DATEDIF(C1,D1+1,"m")
한 달의 시작 날짜를 포함하는 C 열을 셀 수 없지만 시작 날짜와 끝 날짜가 항상 같은 연도에 있다고 믿을 수있는 경우 다음 공식 중 하나가 트릭을 수행합니다.
=IF(MONTH(D1+1)=MONTH(D1),MONTH(D1)-MONTH(C1),MONTH(D1)-MONTH(C1)+1) =IF(MONTH(D1+1)=MONTH(D1),MONTH(D1)-1,MONTH(D1))-MONTH(C1)+1 =MONTH(EOMONTH(D1,0))-MONTH(EOMONTH(C1,0))+(EOMONTH(D1,0)=D1) =IF(EOMONTH(D1,0)=D1,MONTH(D1)-MONTH(C1)+1,MONTH(D1)-MONTH(C1)) =IF(D1<EOMONTH(D1,0),MONTH(D1)-1,MONTH(D1))-MONTH(C1)+1 =MONTH(D1)-MONTH(C1)+IF(D1=EOMONTH(D1,0),1,0)
시작일과 종료일의 연도가 다를 수 있다면 공식이 좀 더 복잡합니다. 다음 변형은 날짜 범위에서 올바른 월 종료 수를 계산합니다.
=12*(YEAR(D1)-YEAR(C1))+MONTH(D1)-MONTH(C1)+INT(D1=EOMONTH(D1,0)) =12*(YEAR(D1)-YEAR(C1))+MONTH(D1)-MONTH(C1)+IF(EOMONTH(D1,0)=D1,1,0) =12YEAR(D1)+MONTH(D1)-12YEAR(C1)-MONTH(C1)+IF(D1=EOMONTH(D1,0),1,0) =12YEAR(D1)+MONTH(D1)-12YEAR(C1)-MONTH(C1)+(D1=EOMONTH(D1,0)) =12YEAR(D1)+MONTH(D1)-12YEAR(C1)-MONTH(C1)+(DAY(D1+1)=1) =MONTH(D1)+12YEAR(D1)-MONTH(C1)-12YEAR(C1)+IF(EOMONTH(D1,0)=D1,1,0) =(MONTH(D1+1)+12YEAR(D1+1))-(MONTH(C1)+12YEAR(C1)) =IF(D1=EOMONTH(D1,0),1,0)+MONTH(D1)-MONTH(C1)+((YEAR(D1)-YEAR(C1))*12) =IF(EOMONTH(D1,0)=D1,(MONTH(D1)-MONTH(C1)+1)+(YEAR(D1)-YEAR(C1))12,MONTH(D1)-MONTH(C1)+(YEAR(D1)-YEAR(C1))12) =IF(D1=EOMONTH(D1,0),DATEDIF(EOMONTH(C1,-1),EOMONTH(D1,0),"m"),DATEDIF(EOMONTH(C1,-1),EOMONTH(D1,0),"m")-1) =IF(D1<C1,"Error",MONTH(D1)-MONTH(C1)+IF(D1MONTH(D1+1))*1) =IF(D1<C1,"Error",(YEAR(D1)-YEAR(C1))*12+(MONTH(D1)-MONTH(C1))+(EOMONTH(D1,0)=D1)) =SUM(N(FREQUENCY(EOMONTH(ROW(INDIRECT(C1&":"&D1)),0),EOMONTH(ROW(INDIRECT(C1&":"&D1)),0))>0))-(D1<EOMONTH(D1,0))
이 공식 중 일부는 약간 길기 때문에 하나를 사용하기로 선택하면 모든 공식을 얻을 수 있는지주의 깊게 관찰하고 싶을 것입니다.
매크로 접근 방식을 선호하는 경우 다음 사용자 정의 함수가 유용 할 수 있습니다.
Function CountMonthEnds(sd As Date, ed As Date) As Integer Dim ceom As Integer Dim cmonth As Integer Dim lmonth As Integer Dim x As Date cmonth = 0 ceom = 0 cmonth = Month(sd) lmonth = cmonth ' go to end date + 1 to allow for end date being end of month For x = sd To ed + 1 cmonth = Month(x) If cmonth <> lmonth Then ceom = ceom + 1 lmonth = cmonth End If Next x CountMonthEnds = ceom End Function
매크로는 시작일과 종료일 사이의 모든 날짜를 간단히 살펴 봅니다. 각 날짜의 월을보고 변경되면 “월말”로 계산합니다. 이 개수는 함수에 의해 반환됩니다.
_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.
이 팁 (572)은 Microsoft Excel 2007, 2010, 2013 및 2016에 적용됩니다.