- 최초 작성일: 2012-05-12
- 최종 수정일: 2026-09-21
- 조회수: 29 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 가장 최근의 지정 요일 날짜 구하기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
기나긴 가뭄 끝에 비가 내립니다.
가뭄 끝에 오는 단비처럼 반가운 강좌가 되길 염원해보면서…
여러분들 모두
하늘에서 떨어지는 빗방울 수 만큼이나 행복하시길 바래요~~
오래간만에 날짜와 관련된 함수를 다루어 볼까요?
아래에서 기준 날짜를 입력하고 요일을 선택하면
지정한 날짜와 가장 가까운 요일의 해당 날짜를 구해줍니다.
| 기준일 | 요일 선택 | 결과 날짜 |
|---|---|---|
| 2012-07-05 | 일요일 (1) | 2012-07-01 |
2012년 7월 5일에서 가장 가까운 일요일은 2012년 7월 1일입니다
엑셀 가장 최근의 지정 요일 날짜 구하기, MOD·WEEKDAY 함수
핵심 요약: 가장 가까운 지정 요일의 날짜 구하기
기준일에서 가장 가까운(직전의) 지정 요일의 날짜는 MOD 함수 한 줄로 구할 수 있습니다. 요일에는 일요일 1 ~ 토요일 7의 값이 있고, 7일 주기로 반복된다는 점을 이용합니다.
-
직전 요일:
=B26-MOD(B26-C26,7) -
다가올 요일:
=B26-MOD(B26-C26,7)+7 - 문장으로 표시: TEXT, LOOKUP 함수와 배열 상수로 "○년 ○월 ○일에서 가장 가까운 ○요일은 …입니다"를 만듭니다.
- 요일 값: 일요일 1, 월요일 2, 화요일 3, …, 토요일 7
1. 가장 최근의 지정 요일 날짜 구하기
이 날짜를 구하기 위해 사용된 수식은 이렇습니다.
=B26-MOD(B26-C26,7)
Mod 함수는 "숫자를 제수로 나눈 나머지"를 구해주는 함수입니다.
그런데 뒤에 왜 7로 나누어 주느냐…
모든 요일에는 일련번호가 매겨져 있습니다.
일요일은 1, 월요일은 2, 화요일은 3, …토요일은 7이라는 값을 가집니다.
따라서 기준일자에서 지정한 요일 값을 빼준 결과값을 7로 나누고,
그 결과값을 기준일자에서 빼주면 가장 최근의 지정한 날짜를
구해주게 되는 것입니다.
참고: 수식의 원리
엑셀에서 날짜는 일련번호이고, (일련번호 - 1)을 7로 나눈 나머지에 1을 더한 값이 WEEKDAY 함수가 돌려주는 요일 값(일요일 1 ~ 토요일 7)과 같습니다. 그래서 MOD(B26-C26,7)은 MOD(WEEKDAY(B26)-C26,7)과 같은 값이 됩니다. 아래처럼 WEEKDAY 함수를 넣어 쓰면 원리가 더 잘 보입니다.
=B26-MOD(WEEKDAY(B26)-C26,7)
2012년 7월 5일(목요일)을 기준일로 요일을 바꿔 보면 결과는 다음과 같습니다.
| 요일 값(C26) | 요일 | =B26-MOD(B26-C26,7) | =B26-MOD(B26-C26,7)+7 |
|---|---|---|---|
| 1 | 일요일 | 2012-07-01 | 2012-07-08 |
| 2 | 월요일 | 2012-07-02 | 2012-07-09 |
| 3 | 화요일 | 2012-07-03 | 2012-07-10 |
| 4 | 수요일 | 2012-07-04 | 2012-07-11 |
| 5 | 목요일 | 2012-07-05 | 2012-07-12 |
| 6 | 금요일 | 2012-06-29 | 2012-07-06 |
| 7 | 토요일 | 2012-06-30 | 2012-07-07 |
2. TEXT와 LOOKUP 함수로 문장 만들기
이 수식을 Text와 Lookup 함수를 이용하여 조금 모양을 낸 것이
예제 파일 B28 셀의 수식입니다.
=TEXT(B26,"yyyy년 m월 d일")&"에서 가장 가까운 "&
LOOKUP(C26,{1,2,3,4,5,6,7},{"일요일","월요일","화요일","수요일","목요일","금요일","토요일"})&
"은 "&TEXT(E26,"yyyy년 m월 d일")&"입니다"
정정: 수식의 셀 주소
원문 수식은 LOOKUP(C17,…), TEXT(E17,…)로 적혀 있었지만 예제 파일의 실제 수식은 요일 선택 셀 C26과 결과 셀 E26을 참조합니다. 예제 파일에 맞게 C26, E26으로 바로잡았습니다.
여기서는 Lookup 함수를 사용할 때 배열을 이용하여 이런 식으로
표현할 수도 있다는 것을 이해하고 넘어가시면 되겠습니다.
3. 다가올 가장 가까운 요일 구하기
만약 다가올 가장 가까운 지정 요일의 날짜를 구하려면
수식을 이런 식으로 바꾸어 주면 되겠지요?
=B26-MOD(B26-C26,7)+7
참고: 예제 파일의 기준일
예제 파일의 기준일 셀(B26)에는 =TODAY()가 들어 있어 파일을 열 때마다 오늘 날짜로 바뀝니다. 위 설명은 저장되어 있던 값인 2012-07-05 기준입니다. 특정 날짜로 확인하려면 B26에 날짜를 직접 입력하세요.
정리 — 수식 한눈에 보기
| 구하려는 날짜 | 수식 |
|---|---|
| 직전의 지정 요일 | =B26-MOD(B26-C26,7) |
| 다가올 지정 요일 | =B26-MOD(B26-C26,7)+7 |
| WEEKDAY를 쓴 표현 | =B26-MOD(WEEKDAY(B26)-C26,7) |
자주 묻는 질문 (FAQ)
Q1. 엑셀에서 기준일과 가장 가까운(직전의) 지정 요일 날짜는 어떻게 구하나요?
=B26-MOD(B26-C26,7)처럼 기준일(B26)에서 MOD(기준일-요일 값,7)을 뺍니다. 요일 값(C26)은 일요일 1, 월요일 2, …, 토요일 7입니다. 예를 들어 2012-07-05에서 요일 값 1(일요일)을 넣으면 2012-07-01이 됩니다.
Q2. 다가올 가장 가까운 요일의 날짜는 어떻게 구하나요?
위 수식에 7을 더해 =B26-MOD(B26-C26,7)+7로 바꿉니다. 기준일이 지정한 요일과 같은 날이면 직전 날짜가 기준일 자신이므로, 7을 더한 결과는 다음 주 같은 요일이 됩니다.
Q3. 수식에서 MOD 함수는 무슨 역할을 하나요?
MOD 함수는 숫자를 제수로 나눈 나머지를 구합니다. 요일은 7일 주기로 반복되므로 (기준일 - 요일 값)을 7로 나눈 나머지가 기준일에서 목표 요일까지 거슬러 올라가야 하는 일수가 됩니다.
마치며
오늘은 짧게 여기까지만 하지요.
다음 시간에…