티스토리 뷰

반응형

연과 월을 입력하면 자동으로 달력이 만들어지는 엑셀을 구현하였다. 이전 달과 다음 달의 날짜도 같이 표현되도록 하였다. 엑셀 매크로는 사용하지 않았으며, 엑셀 내부 함수만으로 작동이 되도록 구현하였다.

 

달력 예제

 

 

Design Concept

달력을 만들때 고려해야할 사항은 다음과 같다.

 

  • 첫 줄에 시작하는 매달 1일이 요일에 따라 위치가 달라진다.
  • 매달 1일이 시작하는 요일에 따라서 마지막 날이 5주 혹은 6주에 위치한다.
  • 그러므로, 달력은 6주까지 출력하도록 포맷을 설정한다.

 

위 사항을 고려하면, 기본적으로 사용해야하는 엑셀 함수는 다음과 같다.

 

  • 연, 월, 일을 입력하면 날짜로 변환해 주는 함수, DATE()
  • 입력한 달의 마지막 날짜가 28일, 30일 혹은 31일인지 알려주는 함수, EOMONTH()
  • 날짜에서 일수를 추출해 주는 함수, DAY()
  • 날짜에 해당하는 요일을 알려주는 함수, WEEKDAY()

 

입력창

현재 년도와 달을 입력하면, 엑셀 내부 함수를 사용하여 지난 달, 이번 달, 다음 달의 시작, 끝 일자 및 요일을 계산하여 나타나도록 하였다. 요일을 알려주는 WEEKDAY() 함수의 결과값은 1~7까지의 숫자로 나타나며, 1은 일요일 ~ 7은 토요일을 나타낸다.

 

첫번째 주 구성

첫번째 주는 매달 1일이 표시되어야 한다. 첫 줄의 칸의 위치를 일요일부터 토요일까지 1 ~ 7의 요일값을 갖게되므로, 이를 이용하여 첫번째 주의 날짜를 배치하였다.

 

이번 달 첫주의 날짜 표시

  • 매달 1일의 요일 번호가 해당 칸의 값과 같으면 1을 표시
  • 현재 셀을 기준으로 좌측의 셀 값이 있을 경우는  좌측 셀값 + 1을 표시

지난 달 마지막 주의 날짜 표시

  • 지난 달 셀 기준으로 오른쪽 아래에 있는 셀 값이 1이면, 지난 달의 마지막 일자 표시
  • 지난 달 셀 기준으로 오른쪽 셀 값이 있을 경우, 오른쪽 셀 값 - 1 표시

지난 달 마지막 주 날짜와 이번 달 첫 주의 날짜를 각각 계산

두 개의 날짜를 통합하여 정리

 

5주 구성

달력의 5주는 매달 1일의 위치가 어디냐에 따라 이번 달의 마지막 날짜가 주중에 위치하여 끝까지 표시가 되지 않을 수 있다. 

 

이번 달 5주의 날짜 표시

  • 첫번째 셀(5주 일요일) 값은 첫번째주의 마지막 날짜에 3주 1일 후 값이므로 7 × 3 + 1로 계산
  • 두번째 셀부터 마지막 셀까지 값은 왼쪽 셀값이 있을 경우는 왼쪽 셀 값 + 1로 표시
  • 그러나, 왼쪽 셀 값 + 1 의 값이 이번 달의 마지막 날보다 큰 경우는 표시하지 않음

다음 달 5주의 날짜 표시

  • 다음 달 셀 기준으로 왼쪽 상단에 있는 셀 값이 이번 달의 마지막 날이면, 1일 표시
  • 다음 달 셀 기준으로 왼쪽 셀 값이 있을 경우, 왼쪽 셀 값 + 1 표시
이번 달 5주 날짜와 다음 달 첫 주의 날짜를 각각 계산

두 개의 날짜를 통합하여 정리

 

6주 구성

달력의 6주는 매달 1일의 위치가 어디냐에 따라 이번 달의 날짜가 표시가 되지 않을 수 있다. 이럴 경우는 다음 달의 날짜만 표시하도록 구성하였다.

 

이번 달 6주의 날짜 표시

  • 첫번째 셀(6주 일요일) 값은 첫번째주의 마지막 날짜에 4주 1일 후 값이므로 7 × 4 + 1로 계산
  • 그러나, 7 × 4 + 1로 계산한 날짜가 이번 달의 마지막 날짜보다 큰 경우 표시하지 않음
  • 두번째 셀부터 마지막 셀까지 값은 왼쪽 셀값이 있을 경우는 왼쪽 셀 값 + 1로 표시
  • 그러나, 왼쪽 셀 값 + 1 의 값이 이번 달의 마지막 날보다 큰 경우는 표시하지 않음

다음 달 6주의 날짜 표시

  • 첫번째 셀(6주 일요일) 값은 이번 달 5주의 토요일이 이번 달의 마지막 날이면 다음 달 1일 표시
  • 첫번째 셀(6주 일요일) 값은 다음 달 5주의 토요일 값이 표시되어 있을 경우, 그 날짜 + 1 표시
  • 다음 달 셀 기준으로 왼쪽 셀 값이 있을 경우, 왼쪽 셀 값 + 1 표시
5주 날짜 계산을 참고하여, 이번달 6주와 다음 달 첫 주의 날짜를 각각 계산

두 개의 날짜를 통합하여 정리

 

 

엑셀 자동 달력.xlsx
0.01MB

 

 

 

 

 

“파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음"

 

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함