핵심 요약
- 엑셀 날짜는 1900년 1월 1일을 1로 세는 일련번호입니다. 그래서 날짜끼리 빼면 일수가 나옵니다.
YEAR·MONTH·DAY는 날짜에서 연·월·일 숫자를,WEEKDAY는 요일 번호를 돌려줍니다.- 요일 이름이 필요하면
=TEXT(A2,"aaa")(월)나=TEXT(A2,"aaaa")(월요일)처럼 날짜에 바로 TEXT를 씁니다.
계약일에서 가입 연도만 뽑아 연도별로 묶거나, 방문일이 무슨 요일인지 표시하거나, 매출 데이터를 월별로 집계하려면 날짜를 연·월·일·요일로 나누는 작업이 먼저 필요합니다. 셀에 보이는 "2019-05-06"을 눈으로 나눠 옮겨 적을 필요 없이 함수 네 개로 해결됩니다.
이 글에서는 날짜 함수를 이해하는 바탕이 되는 날짜 일련번호를 먼저 짚고, DAY, WEEKDAY, MONTH, YEAR 함수 사용법과 한국어 요일 표시 방법, 자주 나는 오류까지 정리합니다.
엑셀 날짜는 숫자로 저장됩니다
엑셀은 날짜를 "연, 월, 일" 글자로 기억하지 않고 일련번호라는 정수로 저장합니다. 윈도우용 엑셀의 기본인 1900 날짜 체계에서는 1900년 1월 1일이 1, 1월 2일이 2이고, 2019년 5월 6일은 43591입니다. 셀에 날짜 모양으로 보이는 것은 표시 형식이 날짜로 지정되어 있기 때문입니다.
- 날짜가 든 셀을 선택하고
홈탭 >표시 형식목록에서일반을 고르면 숨어 있던 숫자가 보입니다. - 숫자이므로 계산이 됩니다.
=B2-A2는 두 날짜 사이의 일수,=A2+30은 30일 뒤 날짜입니다. =DATE(2019,5,6)처럼 연·월·일 숫자로 날짜 일련번호를 만들 수도 있습니다.
1900 날짜 체계에는 옛 스프레드시트와의 호환 때문에 실제로는 없는 1900년 2월 29일(일련번호 60)이 들어 있습니다. 1900년 3월 이후 날짜를 다룰 때는 영향이 없으니 신경 쓰지 않아도 됩니다. 또 1900년 1월 1일보다 이른 날짜는 날짜로 인식되지 않고 텍스트로 남습니다.
DAY 함수로 일(日) 뽑기
DAY는 날짜에서 "며칠"에 해당하는 1~31 사이 숫자를 돌려줍니다.
| 인수 | 뜻 | 예시 |
|---|---|---|
| serial_number | 일을 뽑을 날짜(날짜가 든 셀, 일련번호, DATE 함수 결과) | B3, 43591 |
=DAY(B3)
아래 화면의 B열은 표시 형식만 다를 뿐 모두 날짜 값입니다(06-05-19는 일-월-년 순서라 2019년 5월 6일). 날짜 형식으로 보이든 43591이라는 숫자로 보이든 DAY의 결과는 똑같이 6입니다.
WEEKDAY 함수로 요일 번호 구하기
WEEKDAY는 날짜의 요일을 숫자로 돌려줍니다. 두 번째 인수인 반환 유형에 따라 어느 요일을 1로 볼지가 달라지므로, 이 값을 먼저 정해야 합니다.
=WEEKDAY(B3, 2)
| 반환 유형 | 결과 범위 | 쓰임 |
|---|---|---|
| 1 또는 생략 | 일요일=1 ~ 토요일=7 | 기본값 |
| 2 | 월요일=1 ~ 일요일=7 | 주말 판정에 편리(6 이상이면 토·일) |
| 3 | 월요일=0 ~ 일요일=6 | 주의 시작일 계산 |
| 11~17 | 11은 월요일=1, 12는 화요일=1 … 17은 일요일=1 | 시작 요일을 직접 지정 |
2019년 5월 6일은 월요일이므로 반환 유형을 생략하면 2, 2로 지정하면 1이 나옵니다. 주말만 표시하고 싶다면 =IF(WEEKDAY(B3,2)>=6,"주말","평일")처럼 유형 2와 함께 쓰는 방식이 읽기 쉽습니다.
요일을 "월", "월요일"로 표시하기
요일 이름은 WEEKDAY를 거치지 않고 날짜에 TEXT 함수를 바로 쓰는 편이 정확합니다.
| 수식 | 결과(2019-05-06) |
|---|---|
=TEXT(B3,"aaa") | 월 |
=TEXT(B3,"aaaa") | 월요일 |
=TEXT(B3,"ddd") | Mon |
=TEXT(B3,"dddd") | Monday |
원래 날짜 셀에 요일까지 함께 보이게 하려면 Ctrl+1 > 표시 형식 탭 > 사용자 지정에서 yyyy-mm-dd (aaa)를 입력합니다. 값은 날짜 그대로라 계산에도 계속 쓸 수 있습니다.
MONTH·YEAR 함수로 월과 연도 뽑기
MONTH는 1~12 사이의 월을, YEAR는 네 자리 연도를 돌려줍니다. 사용법은 DAY와 같습니다.
=MONTH(B3)
=YEAR(B3)
세 함수는 DATE와 짝을 이뤄 자주 쓰입니다. 예를 들어 =DATE(YEAR(B3),MONTH(B3)+1,DAY(B3))은 한 달 뒤 같은 날짜를, =DATE(YEAR(B3),1,1)은 그해 1월 1일을 만듭니다.
화면의 E열은 =TEXT(WEEKDAY(B3),"dddd")로 만든 것입니다. 결과가 맞게 나오는 이유는 요일 번호 1~7을 다시 날짜로 읽으면 엑셀 달력에서 1900년 1월 1일(일요일)~7일(토요일)이 되기 때문입니다. 반환 유형을 2로 바꾸면 요일이 하루씩 어긋나므로 =TEXT(B3,"dddd")처럼 날짜에 직접 쓰는 방식을 권합니다.
날짜 함수에서 #VALUE! 오류가 날 때
날짜 함수가 #VALUE!를 내거나 엉뚱한 값을 돌려준다면 대부분 셀 속 날짜가 진짜 날짜가 아니라 텍스트인 경우입니다.
- 셀 서식을 따로 바꾸지 않았는데 날짜가 왼쪽 정렬되어 있으면 텍스트일 가능성이 높습니다.
=ISNUMBER(B3)가 FALSE면 텍스트입니다. - "2019.05.06"처럼 점으로 구분한 값이 날짜로 인식되지 않았다면, 범위를 선택하고 Ctrl+H(찾기 및 바꾸기)로 "."을 "-"로 바꿔 날짜로 인식되게 합니다.
- 수식 안에 날짜를 직접 쓸 때는
=YEAR("5/6/2019")처럼 영문식 표기를 쓰면 지역 설정에 따라 해석이 달라집니다.=YEAR(DATE(2019,5,6))처럼DATE를 쓰는 편이 안전합니다.
구글 스프레드시트에서는
구글 스프레드시트도 날짜를 일련번호로 저장하며 DAY, MONTH, YEAR, WEEKDAY(반환 유형 1·2·3)를 같은 형식으로 씁니다. 다만 요일 이름 서식 코드는 엑셀과 다를 수 있으므로, 어느 쪽에서든 같은 결과를 원하면 =CHOOSE(WEEKDAY(B3),"일","월","화","수","목","금","토")처럼 요일 번호에 이름을 직접 대응시키는 방법이 확실합니다.
자주 묻는 질문
날짜를 입력했는데 43591 같은 숫자로 보입니다.
값은 정상이고 표시 형식만 일반이나 숫자로 되어 있는 상태입니다. 셀을 선택하고 홈 탭 > 표시 형식 목록에서 간단한 날짜를 고르면 날짜로 보입니다.
WEEKDAY 결과가 하루씩 밀려 나옵니다.
반환 유형을 확인하세요. 생략하면 일요일이 1이라 월요일이 2로 나옵니다. 월요일을 1로 보려면 =WEEKDAY(B3,2)처럼 두 번째 인수에 2를 넣습니다.
연도와 월을 합쳐 "2019-05"처럼 표시할 수 있나요?
=TEXT(B3,"yyyy-mm")을 쓰면 됩니다. 결과는 텍스트이므로 계산보다는 월별 구분용 보조 열에 쓰기 좋습니다.
함께 보면 좋은 글: 엑셀 표시 형식과 셀 서식 정리, 엑셀 수식과 함수 기초 중첩 함수까지
댓글
댓글 남기기