Pro workbook: Month, Year, Week, Events, Setup, Formulas. Sample data, real formulas.
| Calendar | ||||||||||
| Change the year and month; the grid, the events and the highlights follow. Print it: it fits one landscape page. | ||||||||||
| Year | 2026 | First of month | 1 Sep | |||||||
| Month | 9 | Grid starts | 31 Aug | |||||||
| Week starts on | Monday | WEEKDAY type | 2 | |||||||
| September 2026 | This month | |||||||||
| Mon | Tue | Wed | Thu | Fri | Sat | Sun | Days | 30 | ||
| 31 | 1 | 2 | 3 | 4 | 5 | 6 | Weekend days | 8 | ||
| School starts | Dentist 9:00 | Events | 12 | |||||||
| 7 | 8 | 9 | 10 | 11 | 12 | 13 | Holidays | 1 | ||
| Labor Day | Sprint planning | Rent due | Hike with Sam | |||||||
| 14 | 15 | 16 | 17 | 18 | 19 | 20 | ||||
| Quarterly review +1 more | Tax filing deadline | |||||||||
| 21 | 22 | 23 | 24 | 25 | 26 | 27 | ||||
| Flight to Lisbon | Back home | |||||||||
| 28 | 29 | 30 | 1 | 2 | 3 | 4 | ||||
| Car service | Invoice clients | |||||||||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 | ||||
| Yellow cells are yours. Weekends are shaded, today is blue, holidays from Setup are pink, days from the neighbouring months are greyed. | ||||||||||
| Events come from the Events sheet: the first event on a day is shown, more are counted. | ||||||||||
| To print: File → Print, landscape, fit to one page wide. |
| Year at a glance — 2026 | |||||||||||||||||||||||||
| Twelve months from the year on Setup. Weekends shaded, holidays pink, today blue. | |||||||||||||||||||||||||
| WEEKDAY type | 2 | ||||||||||||||||||||||||
| January | February | March | |||||||||||||||||||||||
| Mon | Tue | Wed | Thu | Fri | Sat | Sun | Mon | Tue | Wed | Thu | Fri | Sat | Sun | Mon | Tue | Wed | Thu | Fri | Sat | Sun | |||||
| 1 | 2 | 3 | 4 | 1 | 1 | ||||||||||||||||||||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |||||
| 12 | 13 | 14 | 15 | 16 | 17 | 18 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |||||
| 19 | 20 | 21 | 22 | 23 | 24 | 25 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | |||||
| 26 | 27 | 28 | 29 | 30 | 31 | 23 | 24 | 25 | 26 | 27 | 28 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | |||||||
| 30 | 31 | ||||||||||||||||||||||||
| April | May | June | |||||||||||||||||||||||
| Mon | Tue | Wed | Thu | Fri | Sat | Sun | Mon | Tue | Wed | Thu | Fri | Sat | Sun | Mon | Tue | Wed | Thu | Fri | Sat | Sun | |||||
| 1 | 2 | 3 | 4 | 5 | 1 | 2 | 3 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |||||||||||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | |||||
| 13 | 14 | 15 | 16 | 17 | 18 | 19 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | |||||
| 20 | 21 | 22 | 23 | 24 | 25 | 26 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | |||||
| 27 | 28 | 29 | 30 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 29 | 30 | |||||||||||||
| July | August | September | |||||||||||||||||||||||
| Mon | Tue | Wed | Thu | Fri | Sat | Sun | Mon | Tue | Wed | Thu | Fri | Sat | Sun | Mon | Tue | Wed | Thu | Fri | Sat | Sun | |||||
| 1 | 2 | 3 | 4 | 5 | 1 | 2 | 1 | 2 | 3 | 4 | 5 | 6 | |||||||||||||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | |||||
| 13 | 14 | 15 | 16 | 17 | 18 | 19 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | |||||
| 20 | 21 | 22 | 23 | 24 | 25 | 26 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | |||||
| 27 | 28 | 29 | 30 | 31 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 28 | 29 | 30 | |||||||||||
| 31 | |||||||||||||||||||||||||
| October | November | December | |||||||||||||||||||||||
| Mon | Tue | Wed | Thu | Fri | Sat | Sun | Mon | Tue | Wed | Thu | Fri | Sat | Sun | Mon | Tue | Wed | Thu | Fri | Sat | Sun | |||||
| 1 | 2 | 3 | 4 | 1 | 1 | 2 | 3 | 4 | 5 | 6 | |||||||||||||||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | |||||
| 12 | 13 | 14 | 15 | 16 | 17 | 18 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | |||||
| 19 | 20 | 21 | 22 | 23 | 24 | 25 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | |||||
| 26 | 27 | 28 | 29 | 30 | 31 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 28 | 29 | 30 | 31 | |||||||||
| 30 |
| Week planner | ||||||
| Type any date; the week containing it is laid out with every event from the Events sheet. | ||||||
| Week of | 2026-09-09 | Starts | Mon 7 Sep | |||
| Mon 7 Sep | Tue 8 Sep | Wed 9 Sep | Thu 10 Sep | Fri 11 Sep | Sat 12 Sep | Sun 13 Sep |
| Labor Day | ||||||
| Sprint planning | Rent due | Hike with Sam | ||||
| Six event slots per day. A seventh event on the same day is still counted on Month ('+N more') but not listed here. | ||||||
| Holiday names in italics under the date. |
| Events | ||||
| One row per event: date, what, category. Order doesn't matter. Two on the same day: the grid shows the first and counts the rest. | ||||
| Date | Event | Category | # that day | key |
| 2026-09-01 | School starts | Family | 1 | 462661 |
| 2026-09-03 | Dentist 9:00 | Personal | 1 | 462681 |
| 2026-09-08 | Sprint planning | Work | 1 | 462731 |
| 2026-09-10 | Rent due | Deadline | 1 | 462751 |
| 2026-09-12 | Hike with Sam | Personal | 1 | 462771 |
| 2026-09-15 | Quarterly review | Work | 1 | 462801 |
| 2026-09-15 | Dinner at Nora's | Family | 2 | 462802 |
| 2026-09-18 | Tax filing deadline | Deadline | 1 | 462831 |
| 2026-09-21 | Flight to Lisbon | Travel | 1 | 462861 |
| 2026-09-25 | Back home | Travel | 1 | 462901 |
| 2026-09-28 | Car service | Personal | 1 | 462931 |
| 2026-09-30 | Invoice clients | Work | 1 | 462951 |
| 2026-10-02 | Team offsite | Work | 1 | 462971 |
| 2026-10-09 | Mum's birthday | Family | 1 | 463041 |
| Setup | |||
| Year, month and week start for Month and Year; holidays; event categories. | |||
| Year | 2026 | ||
| Month (1–12) | 9 | ||
| Week starts on | Monday | ||
| Holiday date | Name | Categories | |
| 2026-01-01 | New Year's Day | Work | |
| 2026-04-03 | Good Friday | Personal | |
| 2026-05-25 | Spring bank holiday | Family | |
| 2026-09-07 | Labor Day | Travel | |
| 2026-11-26 | Thanksgiving | Deadline | |
| 2026-12-25 | Christmas Day | ||
| 2026-12-26 | Boxing Day | ||
| How the formulas work | ||
| Every formula in this workbook, in plain words. Nothing is hidden and nothing needs a macro. Formulas are shown without the leading = sign. | ||
| Where | Formula | What it does |
| Month · first of month | DATE($B$3,$B$4,1) | Year and month from Setup become a real date. |
| Month · grid start | $E$3-WEEKDAY($E$3,$E$5)+1 | Steps back from the 1st to the start of its week. WEEKDAY type 2 counts Monday as 1, type 1 counts Sunday as 1 — that's how 'week starts on' works. |
| Month · a day cell | $E$4+8 | Grid start plus an offset (0–41). It's a real date shown with the number format 'd', so highlights and lookups can use it. |
| Month · day name | CHOOSE(WEEKDAY($E$4+0,2),"Mon","Tue",…) | CHOOSE on the weekday number instead of TEXT(…,"ddd"): the same in every language and every app. |
| Month · text under a day | IF(MONTH(B8)<>$B$4,"",holiday&" · "&event&" +1 more") | Blank for days outside the month. Otherwise the holiday name from Setup, the first event from Events, and a count of any further events that day. |
| Month · first event of a day | IFERROR(INDEX(ev_text,MATCH(B8*10+1,ev_keys,0)),"") | Looks up the key 'date × 10 + 1'. The Events sheet numbers events that share a date, so the 2nd event is key +2 and so on — no array formulas. |
| Month · '+N more' | IF(COUNTIF(ev_dates,B8)>1," +"&(COUNTIF(ev_dates,B8)-1)&" more","") | How many events that day beyond the first. |
| Month · other-month grey | Conditional format: =MONTH(B$8)<>$B$4 | Applied to both the number row and the text row of each week, anchored to the number row. |
| Month · weekend / holiday / today | WEEKDAY(B$8,2)>5 · =COUNTIF(hol_dates,B$8)>0 · =B$8=TODAY() | Three more rules on the same range. TODAY() recalculates when the file opens. |
| Month · weekend days | INT((K7-1-MOD(6-WEEKDAY($E$3,2),7))/7)+INT((K7-1-MOD(7-WEEKDAY($E$3,2),7))/7)+2 | Saturdays plus Sundays. MOD(6-weekday,7) is the offset from the 1st to the first Saturday; every 7 days after that is another one. No arrays, no NETWORKDAYS. |
| Events · # that day | IF(A5="",0,COUNTIF($A$5:A5,A5)) | Running count of this date so far — 1 for the first event on a day, 2 for the second. |
| Events · key | IF(A5="",0,A5*10+D5) | Date serial × 10 + that number. Unique per event, numeric, so MATCH finds it exactly. |
| Year · a day cell | IF(MONTH(x)<>9,"",x) where x = DATE($B$3,9,1)-WEEKDAY(DATE($B$3,9,1),$E$3)+1+offset | Same grid-start arithmetic per month; days outside the month are blank so the mini-month reads cleanly. |
| Week · start | $B$3-WEEKDAY($B$3,IF(Setup!B5="Sunday",1,2))+1 | Any date you type is snapped back to the start of its week. |
| Week · event slot k | IFERROR(INDEX(ev_text,MATCH(A$5*10+k,ev_keys,0)),"") | Six slots per day, keys +1 … +6. |