날짜 관련 함수 총정리
인사/총무과 필독 강의! - 날짜관련 함수 6개 실전예제 모음!
이 강의에서는 직원의 생년월일과 입사일, 라이선스 갱신일처럼 인사·총무 업무에서 자주 다루는 날짜 데이터를 엑셀 함수로 자동 처리하는 방법을 다룹니다. YEAR·MONTH·DATE 같은 기본 분리 함수부터 EDATE·EOMONTH·NETWORKDAYS.INTL·DATEDIF까지 총 12개 함수를 6가지 실전 예제로 단계별로 정리합니다.
실습자료를 준비했어요
수업에서 사용한 예제 파일과 보충 자료를 한 곳에 정리했습니다!👇
입력된 날짜에서 연도/월/일/요일 따로 분리하기
직원별 생년월일이 입력된 표에서 직원별 나이를 계산하거나 월별 생일 정보를 취합해야 할 때가 있습니다. 이런 경우 아래 세 가지 함수를 사용하면 날짜에서 연도, 월, 일을 각각 손쉽게 분리할 수 있습니다.
| YEAR 함수:: 날짜함수 [상세설명 및 예제 보러가기] |
| 설명 : 선택된 날짜의 년도를 반환합니다. |
| 구문 : = YEAR ( 날짜 ) |
| MONTH 함수:: 날짜함수 [상세설명 및 예제 보러가기] |
| 설명 : 선택된 날짜의 월을 반환합니다. |
| 구문 : = MONTH ( 날짜 ) |
| DAY 함수:: 날짜함수 [상세설명 및 예제 보러가기] |
| 설명 : 선택된 날짜의 일을 반환합니다. |
| 구문 : = DAY ( 날짜 ) |

반대로, 각 연도, 월, 일이 따로 입력된 값을 하나의 날짜로 합쳐야 할 때는 DATE 함수를 사용합니다.
이러한 상황은 가공된 데이터를 다룰 때 자주 발생합니다. 예를 들어 연도(2017, 2018…)와 월(1, 2, 3…)이 각각 다른 열에 분리되어 있을 때, 이를 "2017/1/1, 2017/2/1…"과 같은 하나의 날짜 값으로 합치는 작업에 활용됩니다.
| DATE 함수:: 날짜함수 [상세설명 및 예제 보러가기] |
| 설명 : 각 입력된 연도, 월, 일을 날짜로 변환합니다. |
| 구문 : = DATE ( 연도, 월, 일 ) |
특정 날짜의 요일을 출력하는 방법
특정 날짜에 해당하는 요일을 출력하는 방법은 크게 두 가지로 구분할 수 있습니다.
사용자 지정서식을 활용하기 - 보편적으로 사용
사용자 지정서식을 활용하면 셀에 입력된 실제 값은 날짜로 유지된 채, 화면에 표시되는 형태만 요일로 변경됩니다.
이 방식은 해당 셀을 다른 수식에서 참조하여 날짜 계산을 그대로 이어갈 수 있다는 큰 장점이 있습니다. 따라서 일반적인 실무에서는 사용자 지정서식을 활용하는 것을 권장드립니다.

TEXT 함수를 활용하는 방법
일부 상황에서는 사용자 지정서식 대신 TEXT함수를 사용합니다. 사용자 지정서식으로 요일을 표시하더라도 셀의 실제 값은 여전히 날짜(=숫자)이므로, "월", "화", "수"와 같은 텍스트 자체가 필요한 경우에는 TEXT 함수로 요일 문자열을 직접 만들어야 합니다.
| TEXT 함수:: 텍스트함수 [상세설명 및 예제 보러가기] |
| 설명 : 선택된 셀의 데이터(주로 숫자)를 원하는 형식으로 텍스트화 합니다. |
| 구문 : = TEXT ( 변환할 값, "변환할 형식" ) |
요일을 숫자로 변환하는 방법
업무에 따라 요일별로 가중치를 부여하여 계산해야 할 때도 있습니다. 예를 들어 월요일에는 +1, 화요일에는 +2를 더하는 방식의 계산이 필요한 경우라면, 요일을 숫자로 바로 반환해 주는 WEEKDAY 함수가 가장 편리합니다.
| WEEKDAY 함수:: 날짜함수 [상세설명 및 예제 보러가기] |
| 설명 : 날짜에 해당하는 요일을 사용자가 지정한 유형에 따라 숫자로 반환합니다. |
| 구문 : = WEEKDAY ( 날짜, 변환할 유형 ) |
WEEKDAY 함수의 응용 예제로 자동화 달력 만들기 강의를 함께 준비했습니다. 보다 자세한 내용은 아래 관련 강의를 참고하세요.
텍스트를 날짜로 변경하기
여러 부서에서 자료를 취합하다 보면, 분명히 날짜처럼 보이는 값인데 날짜 계산이 되지 않거나 함수 결과로 #VALUE! 오류가 출력되는 경우가 종종 발생합니다.
원인은 해당 값이 실제로는 텍스트 형식의 날짜로 입력되어 있기 때문입니다. 이번에는 텍스트 형식으로 입력된 날짜를 일반 날짜 형식으로 한 번에 변환하는 방법을 알아보겠습니다.
- 날짜 형식으로 변환하려는 범위를 선택합니다. [데이터] – [텍스트 나누기] – [구분 기호로 분리됨] 을 선택한 뒤 [다음]을 눌러 다음 단계로 이동합니다.

- 2단계는 별도의 설정 없이 [다음]을 눌러 3단계로 넘어갑니다. 3단계 대화상자의 ‘열 데이터 서식’ 항목에서 ‘날짜’를 선택하고 형식을 [년월일]로 지정한 뒤 [마침]을 눌러 변환을 마무리합니다.

- [텍스트 나누기] 기능으로도 날짜 형식으로 변환되지 않는 텍스트 형식의 날짜가 있을 수 있습니다. 특히 "년/월/일"로 단어가 함께 입력된 날짜가 대표적입니다. 이 경우에는 아래 수식을 복사한 뒤 빈 셀에 붙여넣기 합니다. 붙여넣으면 #NAME? 오류가 표시되지만, 이는 정상이므로 곧바로 다음 단계로 진행합니다.
=DATE(LEFT(셀,FIND("년",셀,1)-1),MID(셀,FIND("년",셀,1)+1,FIND("월",셀,1)-FIND("년",셀,1)-1),MID(셀,FIND("월",셀,1)+1,LEN(셀)-FIND("월",셀,1)-1))
- 수식을 붙여넣은 셀을 선택한 상태에서, 키보드 CTRL + H 키를 눌러 [찾기 및 바꾸기] 대화상자를 실행합니다.
찾을 내용 : 셀
바꿀 내용 : B8 (텍스트로 입력된 날짜의 셀 주소)
찾는 위치 : 수식 ⇨ [모두 바꾸기] 버튼 클릭
- 변경 안내 메시지가 표시되면서 해당 수식의 결과값으로 올바른 날짜 형식의 값이 반환됩니다.

각 소모품의 교체주기 별 교체일 계산 및 경고표시 띄우기
총무부에서는 소모품과 라이선스 등의 갱신일을 수시로 점검해야 하는 업무가 자주 발생합니다.
특히 여러 매장을 동시에 관리하거나 직원별로 별도의 프로그램 라이선스를 발급해 사용 중이라면, 각 항목별 납기일을 꾸준히 챙겨야 하므로 실무자의 지속적인 관리가 필수입니다.

이러한 자료를 엑셀에서 관리할 경우, EDATE 함수를 사용하면 각 항목의 교체주기에 따라 다음 교체일을 자동으로 계산할 수 있습니다.
여기에 TODAY 함수를 함께 응용하면 각 제품의 교체일이 이미 지났거나 교체일이 임박했을 때 해당 셀에 경고표시를 띄워, 담당자의 누락이나 실수를 사전에 방지할 수 있습니다.
| EDATE 함수:: 날짜함수 [상세설명 및 예제 보러가기] |
| 설명 : 지정한 날짜로부터 특정개월 전/후의 날짜를 계산하여 반환합니다. |
| 구문 : = EDATE ( 시작일, 개월수 ) |
| TODAY 함수:: 날짜함수 [상세설명 및 예제 보러가기] |
| 설명 : 사용 중인 PC의 현재 날짜를 반환합니다. |
| 구문 : = TODAY () |
엑셀 날짜 함수 직원별 수습기간 및 최초 연봉협상일 계산
실무에서는 지정한 날로부터 특정 개월이 지난 달의 마지막 날을 계산해야 하는 상황이 자주 발생합니다. 예를 들어 급여나 대금 결산은 대부분 매월 말일을 기준으로 처리되므로, 월말 기준의 날짜 계산은 인사·총무 업무에서 빠질 수 없는 작업입니다.
| EOMONTH 함수:: 날짜함수 [상세설명 및 예제 보러가기] |
| 설명 : 지정한 날짜로부터 특정개월이 지난 월의 마지막날을 반환합니다. |
| 구문 : = EOMONTH ( 시작일, 개월수 ) |
이번 강의에서는 각 직원의 입사일을 기준으로 3개월이 지난 시점의 수습기간 종료일을 계산하는 예제를 다뤘습니다. 수습기간은 입사 후 3개월이 경과한 달의 마지막 날에 종료된다고 가정하였습니다.

수습기간 중에는 일반적으로 연봉협상이 진행되지 않으므로, 수습기간 종료 후 가장 먼저 도래하는 연봉 협상일을 계산하는 방법도 함께 살펴봤습니다. 본 예제에서는 회사가 매년 4월에 연봉협상을 진행한다고 가정합니다.
따라서 수습기간 종료일이 같은 해 4월 이전이라면 그 해 4월 1일에 첫 연봉협상을 진행하고, 4월 이후라면 다음 해 4월 1일에 진행하도록 IF 함수를 활용해 수식을 구성합니다.

| IF 함수:: 논리함수 [상세설명 및 예제 보러가기] |
| 설명 : 논리식을 판단하여 참일 경우와 거짓일 경우의 결과값을 구분하여 반환합니다. |
| 구문 : = IF ( 논리식, 결과값[참일경우], 결과값[거짓일경우] ) |
특정요일, 공휴일 제외한 실제 근무일수 계산하기
대부분의 일용직과 아르바이트 직원의 급여는 실제 근무일수를 기준으로 산정됩니다. 따라서 정규직처럼 주말과 공휴일에만 쉬는 형태가 아니라, 특정 요일(예: 월/수/금)에 쉬는 근무 형태라면 별도의 계산식이 필요합니다.
이런 경우 NETWORKDAYS.INTL 함수를 활용하면, 정해진 요일 휴무뿐 아니라 불규칙적으로 발생하는 공휴일까지 모두 반영하여 실제 근무일수를 정확하게 계산할 수 있습니다. (엑셀 2010 이후 버전에서 사용 가능합니다.)
| NETWORKDAYS.INTL 함수:: 날짜함수 [상세설명 및 예제 보러가기] |
| 설명 : 특정 요일 또는 공휴일을 별도로 지정하여, 해당 날짜를 제외한 두 날짜 사이의 실제 근무일수를 계산합니다. |
| 구문 : = NETWORKDAYS.INTL ( 시작일, 종료일, [요일별 휴무], [공휴일] ) |
이번 강의에서는 공휴일 범위에 새롭게 추가되는 공휴일이 자동으로 계산 범위에 반영되도록 동적범위를 활용하였습니다. 동적범위에 대한 자세한 설명은 아래 관련 강의를 참고해 주세요.
예제파일에서 키보드 CTRL + F3 키를 눌러 이름관리자를 실행한 뒤, 아래 수식으로 새로운 사용자 지정 범위를 생성합니다.

엑셀 날짜 함수 직원별 근속 년수 계산하기
이번 예제에서는 직원별 근속 년수와 근속 개월수를 계산합니다. 앞서 살펴본 YEAR 함수와 MONTH 함수를 응용해도 결과는 얻을 수 있지만, DATEDIF 함수를 사용하면 단 하나의 함수만으로 훨씬 간단하게 계산할 수 있습니다.
| DATEDIF 함수:: 날짜함수 [상세설명 및 예제 보러가기] |
| 설명 : 두 날짜사이의 일,월,연도 차이를 다양한 방법으로 계산합니다. |
| 구문 : = DATEDIF ( 시작일, 종료일, 계산단위 ) |

업무고민이 해결 될거 같음...
정말 감사합니다~~
IF 함수를 같이 사용하시면 됩니다.
으로 사용해보세요 :)
예를들어 2020-10-01~2020-10-31 데이터가 있으면
2020-10-01~2020-10-07의 특정데이터만 합계를 구하는방법이 있을까요?
주차별로 계산하려니까 1주차랑 2주차가 나뉘어서 햇갈려서요 ㅜㅜ
답변이 도움이 되셨길 바랍니다.
11/1/2020
10/27/2020
1/19/2021