728x90
목차

1. 단순 날짜 연산

2. DAYS, DAYS360 함수 - 기간을 계산

3. DATEDIF 함수 - 기간을 일 단위로 계산

4. EDATE, EOMONTH 함수 - 몇달이 지났는지 세는 함수

 

지난번에 날짜 서식의 기본에 대해서 포스팅했습니다.

서식에 대해서는 설명 드렸기 때문에 오른쪽링크 참고 하시면 됩니다.(날짜 서식과 기본 함수들)

하지만 단순히 연도, 월, 일자를 표기하는 것을 넘어서 기간을 계산하는 강력한 함수들도 있습니다.

이걸 사용하면 달력을 펴고 날짜를 일일히 셀 필요는 없다는 것이죠.

 

 

 

 

1. 단순 날짜 연산

 

지난번 포스팅에서도 설명을 했지만 날짜서식이라고 쳐도 기본적으로는 숫자입니다.

그래서 사칙연산이 먹힙니다. 중복이기는 하지만 잠시 집고 넘어가겠습니다.

 

수식 결과 설명
=DATE(2021,03,01) + 9 2021-03-10 2021년 3월 1일에서 9일지난 날짜
=DATE(2021,03,01) + 7*52 2022-02-28 2021년 3월 1일에서 52주 지난날짜
=DATE(2021,03,10)-DATE(2021,03,01) 9 2021-03-01에서 2021-03-10까지 기간

 

2. DAYS, DAYS360 함수 - 기간을 계산

 

DAYS(end_date, start_date) : start_date에서 end_date 사이가 몇일인지 계산합니다.

 

  • end_date : 계산하고자 하는 기간의 마지막 날짜입니다.
  • start_date : 계산하고자 하는 기간의 시작 날짜입니다.
  • 윤년과 월에 따른 일자를 포함하여 계산함으로 편리합니다.
    특히 계산하고자 하는 날짜가 수백일이 되면 이 함수만큼 좋은게 없습니다.
  • 이 함수는 2013버전에 추가되었습니다. 사용할 수 없을 수 있습니다.

텍스트 "2022-3-1"처럼 일부 날짜 형식은 알아서 변환합니다.

입력된 날짜 서식들은 그냥 빼기를 하는 것과 같은 결과가 나옵니다.

여러 엑셀 파일이나 홈페이지, 외부문서에서 값을 복사해서 붙여넣는 경우에는 날짜처럼 보이지만 텍스트처럼 인식되는 경우가 있는데 이럴때 편리합니다. 하지만 "3월 2일" 같은 형식의 텍스트는 인식하지 못하네요.

 

수식 결과
DATE(23-03-10) - DATE(23-03-01)  9
DAYS(DATE(23-03-10), DATE(23-03-01)) 9
A1 : 2023-03-01
A2 : '2023-3-10 → (텍스트로 입력)
DAYS(A2, A1)
9

 

 

DAYS360(start_date,end_date,[method]) : 한달을 무조건 30일로 1년을 360일로 계산하는 방식에서 기간을 구합니다.

 

  • end_date : 계산하고자 하는 기간의 마지막 날짜입니다.
  • start_date : 계산하고자 하는 기간의 시작 날짜입니다.
  • [method] : TRUE는 유럽식, FALSE는 미국식입니다.
    TRUE : 종료일자가 31일인 경우에는 무시합니다.(30일로 계산합니다.)
    FALSE : 종료일자가 31일인 경우 포함합니다.(다음달 1일로 계산합니다.) - 기본값입니다.
  • 윤년과 월에 따른 일자를 포함하지 않습니다..

아직 문서로 처리하던 시절에 일일히 30, 31일로 반영해서 계산하면 오류가 너무 심해서 전부 30일로 변환해서 처리했죠.

아직도 일부에서는 사용하는 방법인데 요즘은 컴퓨터가 다 계산해 주기때문에 오히려 이게 어렵습니다.

아래 예를 보면 잘 이해되실꺼에요.

시작날짜 끝날짜 DAYS360
(TRUE)
DAYS360
(FALSE)
2023-02-01 2023-02-27 26 26
2023-02-01 2023-02-28 29 27
2023-02-01 2023-03-01 30 30
2023-03-01 2023-03-30 29 29
2023-03-01 2023-03-31 29 30
2023-03-01 2023-04-01 30 30

 

DAYS360은 2월이나 3월을 전부 30일로 간주함으로 날짜가 지나도 일수가 안늘어나는 기간이 생기게 됩니다.

그때 처리방법이 True와 False로 나타냅니다.

 

320x100

 

 

3. DATEDIF 함수 - 기간을 일 단위로 계산

 

DATEDIF(start_date,end_date,unit) : 시작날짜(start_date)와 종료일자(end_date) 사이의 연, 월, 일을 반환한다.

 

  • start_date : 계산하고자 하는 기간의 시작 날짜입니다.
  • end_date : 계산하고자 하는 기간의 마지막 날짜입니다.
  • unit : 반환하려는 정보의 양식입니다.

 

unit 설명
Y 해당 기간에 포함됨 연도
M 해당 기간에 포함된 개월
D 해당 기간에 포함된 일자
MD 월을 무시한 날짜차이
YM 연도를 무시한 개월차이
YD 연도를 무시한 날짜차이

 

기간의 차이를 "월"이나 "연도"로만 나타낼 수 있습니다.

예를 들어 unit YM을 이용하면 2002-03-08에서 2012-07-01은 3이 됩니다.(연도는 무시 개월만 표기)

엑셀 도움말에는 아직 최적화가 다 되있지 않다는 설명이 있습니다.

반드시 필요할 때만 사용하는 것이 좋겠네요.

 

4. EDATE, EOMONTH 함수 - 몇달이 지났는지 세는 함수

 

일자야 어째든 월이 중요한 경우가 있습니다.

입사하고 몇달이 지났는지 등등 말이죠.

그런 상황에서 사용하는 함수들입니다.

 

EDATE(start_date, months) : 일자(start_date)에서 달이 지난 만큼을 반환합니다.

 

  • start_date : 시작 날짜입니다. 날짜는 DATE 함수를 사용하거나 날짜 서식을 참조하거나 입력합니다.
  • months : start_date 전이나 후의 개월 수입니다. 앞으로의 날짜는 양수로, 지나간 날짜는 음수로 입력하면 됩니다.
  • 30일이나 31일짜리 달을 무시하고 몇달 지난 날짜를 반환합니다.

 

시작날짜 수식 결과
2023-02-03 =EDATA(A1,1) 2023-03-03
2023-02-03 =EDATA(A1,2) 2023-04-03
2023-02-03 =EDATA(A1,1) 2023-05-03

 

EOMONTH(start_date, months) : 일자(start_date)에서 달이 지난 만큼의 월 마지막 날을 반환합니다.

 

  • start_date : 시작 날짜입니다. 날짜는 DATE 함수를 사용하거나 날짜 서식을 참조하거나 입력합니다.
  • months : start_date 전이나 후의 개월 수입니다. 앞으로의 날짜는 양수로, 지나간 날짜는 음수로 입력하면 됩니다.
  • 30일이나 31일짜리 달을 무시하고 month에 입력된 숫자만큼 지난 달의 마지막날을 반환합니다.
  • 설명이 어려워서 그렇지 유용한 함수로 몇일에 입사를 하든지 월급 나오는 날은 같을 경우 등에서 사용됩니다.

 

시작날짜 수식 결과
2023-02-03 =EOMONTH(A1,1) 2023-03-31
2023-02-07 =EOMONTH(A1,2) 2023-04-30
2023-02-10 =EOMONTH(A1,1) 2023-05-31

 

 

 

반응형

+ Recent posts