안녕하세요.

 

엑셀 기능을 이용해 달력을 만들어 보겠습니다.

[A1] 셀에 연도, [B1] 셀에 을 적으면 해당하는 연도, 월 달력을 나타내도록 만들 예정입니다.

달력을 만들려면 두 가지를 알아야 하는데, 첫번째는 해당 월 첫번째 날짜의 요일이고, 두번째는 해당 월의 마지막 날짜입니다.

첫 날 요일을 알게 되면 그 셀 위치에서 1부터 순서대로 마지막 날짜까지 적으면 됩니다.

 

엑셀은 마지막 날짜를 자동으로 계산해 주기 때문에 첫 날 요일만 확인하면 손쉽게 달력을 만들 수 있습니다.

 

 

실습 파일 다운로드

달력 만들기_실습.xlsx
0.01MB

완성 파일 다운로드

달력 만들기_완성.xlsx
0.01MB

 

실습 파일 [A1] 셀에 연도, [B1] 셀에 을 입력해 두었습니다.

요일을 [A2:G2] 셀 범위에 나타내기 위해 먼저 [A2] 셀에 '일'을 입력합니다.

달력은 일요일부터 주를 시작할 수도 있고, 월요일부터 시작할 수도 있는데, 어떤 요일부터 시작하느냐에 따라 수식이 달라집니다.

[A2] 셀 채우기 핸들에서 드래그해서 '토'가 나타나는 [G2] 셀까지 채웁니다.

사용자 지정 목록에 등록되어 있어 채우기로 간단히 나타낼 수 있습니다.

 

[A3] 셀부터 날짜가 나타나도록 수식을 작성합니다.

 

첫 날의 요일을 확인하는 알고리즘을 생각해 보죠.

 

  1. 일단 첫 날이 주 시작인 일요일이라고 가정을 하죠.
  2. 그런 다음 첫 날의 실제 요일을 구합니다.
  3. 가정했던 요일과 실제 요일의 차이만큼 보정을 합니다.

2021년 2월의 경우 첫 날은 월요일입니다.

일요일로 가정한 날짜에서 더하기 1을 하면 실제 요일인 월요일이 됩니다.

그럼 일요일의 실제 날짜는 2021년 2월 1일에서 1을 뺀 날짜인 2021년 1월 31일이 됩니다.

 

2021년 4월을 한 번 더 예로 들어 보죠.

2021년 4월의 경우 첫 날은 목요일입니다.

일요일로 가정한 날짜에서 더하기 4를 하면 실제 요일인 목요일이 됩니다.

그럼 일요일의 실제 날짜는 2021년 4월 1일에서 4를 뺀 날짜인 2021년 3월 28일이 됩니다.

 

이제 이 알고리즘을 수식으로 실제 구현하면 달력을 만들 수 있습니다.

 

연월일에 해당하는 값을 받아서 실제 날짜 형식 데이터로 만드는 DATE 함수와 특정일의 요일을 숫자로 알려주는 WEEKDAY 함수를 쓰면 됩니다.

 

[A3] 셀에 커서를 두고 수식을 작성합니다.

=date(A1, B1, 1)

이 수식으로 2021년 2월 1일이 나타납니다.

여기에 실제 날짜의 요일을 숫자로 나타내야 합니다.

=date(A1,B1,1)-weekday(date(A1,B1,1),1)

WEEKDAY 함수는 인수가 2개인데, 첫번째 Serial_number 인수는 요일을 찾으려는 날짜입니다.

DATE 함수로 2021년 2월 1일을 넣었습니다.

두번째 Return_type 인수는 반환 값 유형을 결정하는 숫자인데, 일요일을 주 시작으로 하는 경우엔 1을 입력합니다.

 

수식 끝에 더하기 1을 해서 수식을 마무리합니다.

=DATE(A1,B1,1)-WEEKDAY(DATE(A1,B1,1),1)+1

수식 마지막에 더하기 1을 하는 이유는 일요일의 경우 WEEKDAY 함수가 숫자 1을 반환하는데, 현재 위치가 일요일 위치이므로 반환된 1을 0으로 만들어야 하기 때문입니다.

WEEKDAY 함수가 일요일인 경우 0, 월요일인 경우 1, ... 로 나타낸다면 더하기 1을 할 필요가 없지만 일요일은 1, 월요일은 2, ... 로 나타내기 때문에 필요한 처리입니다.

 

[B3] 셀을 선택하고 수식을 작성합니다.

=A3+1

[B3] 셀 채우기 핸들에서 드래그해서 [G3] 셀까지 채웁니다.

'#######'로 화면에 표시되는 이유는 열 너비가 좁기 때문이고, 수식은 제대로 작성된 것입니다.

 

화면에 제대로 표시되도록 열 너비를 바꾸겠습니다.

 

열 머리글에서 A열부터 G열까지 범위 선택합니다.

단축키 <Alt, H, O, W>를 순서대로 눌러 [열 너비] 대화상자를 엽니다.

<Alt>를 누르면 선택 항목에 단축어를 표시합니다.

H, O, W는 순서대로 [홈]-[셀] 탭 [서식]-[열 너비]를 선택한 것입니다.

 

열 너비는 10.5를 입력합니다.

[A4] 셀을 선택하고 수식을 작성합니다.

=A3+7

[A4] 셀 채우기 핸들에서 드래그 해서 [G4] 셀까지 채웁니다.

현재 [A4:G4] 셀 범위 선택된 상태에서 [G8] 셀까지 드래그 합니다.

2월인 경우 마지막 날짜가 28일이라 7행까지만 나타내도 충분하지만 첫 날이 토요일이고, 마지막 날짜가 31일까지 있는 경우 8행 월요일까지 날짜를 나타내야 하는 경우가 있기 때문입니다.

보기가 불편하니 서식을 수정하겠습니다.

행 머리글에서 1행부터 8행까지 범위 선택합니다.

단축키 <Alt , H, O, H>를 눌러 [행 높이] 대화상자를 나타냅니다.

행 높이는 25를 입력합니다.

2행만 선택해서 행 높이를 20으로 설정합니다.

[A2:G2] 셀 범위를 선택한 뒤 단축키 <Alt, H, H>를 눌러 채우기 색을 선택합니다.

[A1:G8] 셀 범위를 선택해 단축키 <Alt, H, C, 2>를 눌러 가운데 정렬합니다.

[A2:A8], [G2:G8] 셀 범위를 선택해 단축키 <Alt, H, F, C>를 눌러 글꼴 색[표준 색][빨강]으로 설정합니다.

[A1] 셀을 선택하고 단축키 <Ctrl + 1>을 눌러 [셀 서식] 대화상자에서 [표시형식][사용자 지정] 항목에서 형식의 G/표준 뒤에 '년'을 추가합니다.

[B1] 셀을 선택하고 단축키 <Ctrl + 1>을 눌러 [셀 서식] 대화상자에서 [표시형식][사용자 지정] 항목에서 형식의 G/표준 뒤에 '월'을 추가합니다.

[A3:G8] 셀 범위를 선택한 뒤 단축키 <Ctrl + 1>을 눌러 [셀 서식] 대화상자에서 [표시형식][사용자 지정] 항목에서 형식의 내용을 모두 지우고 'd'를 입력합니다.

서식을 적용했습니다.

조건부 서식 기능으로 전월, 익월 날짜는 보이지 않도록 글꼴 색흰색으로 나타냅니다.

[A3:G8] 셀 범위 선택된 상태에서 단축키 <Alt, H, L, N>을 눌러 [조건부 서식]-[새 규칙]을 선택합니다.

[새 서식 규칙] 대화상자에서 수식을 작성합니다.

=month(A3)<>$B$1

[서식]을 눌러 [글꼴][색]에서 흰색을 선택합니다.

전월과 익월 날짜는 보이지 않게 됩니다.

유효성 검사 기능으로 [A1]연도[B1]이 입력가능한 범위의 값만 입력되도록 설정합니다.

 

[A1] 셀을 선택하고 단축키 <Alt, A, V, V>를 눌러 [데이터]-[데이터 유효성 검사]-[데이터 유효성 검사]를 실행합니다.

엑셀에서 날짜 형식으로 나타낼 수 있는 연도는 1900년에서 9999년까지입니다.

[데이터 유효성] 대화상자 [설정] 탭에서 [제한 대상]'정수', [제한 방법]'해당 범위'로 지정해서 최소값 1900, 최대값 9999를 입력합니다.

[B1] 셀을 선택하고 단축키 <Alt, A, V, V>를 눌러 [데이터]-[데이터 유효성 검사]-[데이터 유효성 검사]를 실행합니다.

[데이터 유효성] 대화상자 [설정] 탭에서 [제한 대상]'정수', [제한 방법]'해당 범위'로 지정해서 최소값 1, 최대값 12를 입력합니다.

이렇게 달력을 만들었습니다.

필요하시는 분들께 도움이 되길 바랍니다.

+ Recent posts