총 3편에 걸쳐, 구글 스프레드시트로 태스크 트래커를 만든 과정을 기록해보려합니다.
셀프 스터디 기록이라 부족한 부분이 있을 수 있지만, 비슷한 고민을 하신 분들께 조금이라도 도움이 됐으면 합니다.
1. 만들게 된 배경
기존에 공유되는 템플릿들도 여러 개 써봤지만, 딱 제가 원하는 방식대로 동작하는 건 찾기 어려웠습니다.
그래서 그동안 참고해 왔던 간트차트나 다양한 스케줄 시트의 레이아웃을 바탕으로, 필요한 기능을 직접 조합해서 만들어 보기로 했습니다. 제 시트의 핵심은 "연도와 월만 바꾸면 날짜와 요일이 자동으로 기재되고, 시작 요일과 주말 포함 여부까지 선택 가능"한 부분입니다.
▼ 아래는 여러 템플릿을 참고하면서 제 용도에 맞게 수식과 구조를 새로 만든 최종 결과물입니다.

2. 레이아웃 설정

시트 상단에 설정 영역 4개를 배치합니다. 그럼 이후 모든 수식들은 이 값을 참조합니다.
| 셀 | 항목 | 예시 | 설명 |
| B2 | 연도 | 2026 | 드롭다운 또는 직접입력 |
| D2 | 월 | 4 | 1~12 중 선택 |
| B3 | 시작일기준 | 1일 | '1일' / '월요일' / '일요일' 선택 |
| D3 | 주말 포함 여부 | 포함 | '포함'/ '제외' |
날짜는 E3 셀부터 오른쪽(가로)으로 최대 37칸까지 나열합니다.
시작 요일이 일요일인데 해당 월 1일이 토요일이면 전월 날짜가 최대 6일 들어가고, 본월 31일까지 합산하면 37칸이 필요합니다.
3. E3 수식 시작 날짜 역산

E3 셀은 시작일 기준에 따라 다른 날짜를 반환합니다. IFS 함수로 분기 처리했습니다.
=IFS(
$B$3="1일", DATE($B$2, $D$2, 1),
$B$3="월요일",
DATE($B$2, $D$2, 1)
- WEEKDAY(DATE($B$2, $D$2, 1), 3),
$B$3="일요일",
DATE($B$2, $D$2, 1)
- WEEKDAY(DATE($B$2, $D$2, 1), 1) + 1
)
각 조건별로 정리하면 아래와 같습니다.
| "1일" | 해당 월 1일을 그대로 반환합니다. |
| "월요일" | WEEKDAY( ,3)은 월=0, 화=1, ..., 일=6을 반환합니다. 1일에서 이 값을 빼면 직전 월요일이 됩니다. |
| "일요일" | WEEKDAY( ,1)은 일=1, 월=2, ..., 토=7을 반환합니다. 1일에서 이 값을 빼고 1을 더하면 직전 일요일이 됩니다. |
WEEKDAY의 두 번째 인수(return_type)를 바꾸면 요일 번호 체계가 달라지는데, 이걸 이용해서 "직전 ○요일"을 역산하는 구조입니다.
4. F3 이후 수식- 월말 자동 끊기

F3부터는 왼쪽 셀에 +1씩 더하되, 해당 월의 마지막 날을 넘으면 빈 칸을 반환합니다.
=IF(
AND(E3 <> "", E3 < EOMONTH(DATE($B$2,$D$2,1), 0)),
E3 + 1,
""
)
위 수식 구조를 분석해보면 아래와 같습니다.
- E3 <> "" — 왼쪽 칸이 비어 있으면 나도 빈 칸
- EOMONTH(DATE($B$2,$D$2,1), 0) — 해당 월 마지막 날짜
- 왼쪽 값이 월말보다 작을 때만 +1, 아니면 빈 문자열
이 수식을 F3에 넣고 AL3까지 "드래그"하거나 "복사"하면 됩니다.
EX) 4월이면 30일까지, 2월이면 28일(윤년 29일)까지만 채워지고 나머지는 빈 칸으로 남습니다.
5. 마무리
이번 편에서는 연도/월/시작일 기준만 바꾸면 날짜가 자동으로 변경되는 뼈대를 만들어보았습니다.
다음 편에서는 조건부 서식을 활용해서 주말은 회색으로, 전월 날짜는 연하게 처리하는 시각화 작업을 해보려합니다.
다음편 : 스프레드시트 태스크 트래커 만들기(2) - 조건부 서식으로 시각화
댓글