How to Make a Calendar in Google Sheets in 2026 (+ Formulas)
Build a monthly calendar in Google Sheets that redraws itself when you change one date, with an events tab, highlights for today and formulas you can copy.
To make a calendar in Google Sheets, type any date from the month you want into one cell, then put a single SEQUENCE formula in the top-left cell of a 7-column grid. It fills six weeks of dates, starting on the Sunday (or Monday) on or before the 1st. Format the grid to show only the day number, and the calendar redraws whenever you change that one date.
A spreadsheet calendar earns its place when the plan is shared, simple and mostly yours to edit: a content schedule, a family rota, a project's milestones, a class timetable. You get a grid anyone can open from a link and no new app to learn. This guide builds a reusable monthly calendar from scratch with formulas you can copy, adds an events list that feeds it, and covers the quicker typed-in version for people who'd rather not touch formulas.
Approach | Best for | Changes month by itself? | Effort |
|---|---|---|---|
Formula grid with an events tab (the template below) | A calendar you reuse every month | Yes, change one cell | One setup, then one cell a month |
Typed-in grid | A one-off month you write notes straight into | No, rebuild or copy it | A rebuild for every month |
Template Gallery | Seeing what Google offers before building | Depends on the template | A couple of clicks |
Can you get a calendar template from Google Sheets?
Google Sheets has a Template Gallery, so a ready-made layout may save you the build. On a computer, go to the Google Sheets home screen, click Template Gallery at the top right, and click a template to open a new file based on it, as Google's templates page describes.
Look through it for a calendar layout before you commit to building. If you don't find one that fits, or you want one that pulls in a list of events, the build below is short and you only do it once.
How to make a monthly calendar in Google Sheets with formulas
The formula version uses one input cell (any date in the month you want), one formula that fills a 7-by-6 grid of dates, and a custom number format that shows just the day number. Six rows always fits: even a 31-day month that starts on a Saturday spans only six weeks.
The worked example uses December 2026. December 1, 2026 is a Tuesday, so a Sunday-first grid starts on Sunday, November 29, and the first two cells belong to November. Those leftover days get grayed out later.
Step 1: Set up the input cell and title
- Open a blank spreadsheet and rename the first tab Calendar (double-click the tab name).
- In A1, type Month: as a label. In B1, type any date in the month you want, such as 12/1/2026.
- In A2, enter the title formula below. It shows the month name and the year as text.
- Select A2:G2, then click Format and then Merge cells, and choose how to merge, per Google's merge guide. Center the title and make it larger.
=TEXT(B1, "mmmm yyyy")The TEXT function turns a date into text in the pattern you give it: mmmm is the full month name and yyyy is the four-digit year. With 12/1/2026 in B1, A2 reads December 2026.
Step 2: Add the day names
Type the day names across A3:G3: Sun, Mon, Tue, Wed, Thu, Fri, Sat. Start with Mon instead if your weeks run Monday to Sunday, and use the Monday version of the formula in the next step so the dates line up with the headings.
Step 3: Fill the grid with one formula
Click A4 and paste the formula for your week start. Nothing else goes in A4:G9: the dates spill into the cells to the right and below, the way Google's arrays guide describes array results spilling, so leave those 42 cells empty.
=SEQUENCE(6, 7, EOMONTH(B1, -1) + 1 - WEEKDAY(EOMONTH(B1, -1) + 1) + 1)=SEQUENCE(6, 7, EOMONTH(B1, -1) + 1 - WEEKDAY(EOMONTH(B1, -1) + 1, 2) + 1)Read from the inside out, the formula does three things:
- EOMONTH(B1, -1) + 1 finds the 1st of the month. EOMONTH returns the month-end date a set number of months away, so going back one month and adding a day lands on the 1st, whatever date you typed in B1.
- WEEKDAY works out how far that 1st sits from the start of the week. By default it counts Sunday as 1 and Saturday as 7; with type 2, Monday is 1 and Sunday is 7, per Google's WEEKDAY page. Subtracting that number and adding 1 steps back to the Sunday (or Monday) on or before the 1st.
- SEQUENCE(6, 7, start) returns a grid of 6 rows and 7 columns that counts up by 1 from that starting date. The step defaults to 1, according to Google's SEQUENCE page, and one step on a date is one day.
Step 4: Show only the day number
- Select A4:G9.
- Click Format, then Number, then Custom date and time.
- Type d as the format and click Apply.
At this point each cell shows 29, 30, 1, 2 and so on, while still holding a full date underneath. That matters for the next steps, which compare cells against today and against your events. The menu path is from Google's number format guide.
Step 5: Size the grid so it looks like a calendar
Select rows 4 to 9, right-click a row number, choose Resize rows, and enter a height (around 60 to 80 pixels reads well). Do the same with columns A to G and Resize columns. Google's resize steps cover both. Then set the dates to align top-left, add borders to the grid, and shade the header row.
How to add events to a Google Sheets calendar
Keep events on their own tab and let the calendar read them. Typing events into the formula grid doesn't work, because those cells belong to the SEQUENCE result, and a separate list is easier to sort, filter and share anyway.
Create the Events tab
- Add a new sheet with the + at the bottom left and name it Events.
- In A1, type Date; in B1, type Event. Add a C1 for Time or Owner if you want them.
- Enter one event per row from row 2 down, with a real date in column A.
If several people will add events, a dropdown in an Owner or Status column keeps the entries consistent. Select the column, then go to Insert and Dropdown, and type the options under Criteria, as Google's dropdown guide explains.
Show the month's events under the calendar
In A11 on the Calendar tab, paste this formula. It lists every event in the month shown in B1, sorted by date.
=IFERROR(SORT(FILTER(Events!A2:C, MONTH(Events!A2:A) = MONTH(B1), YEAR(Events!A2:A) = YEAR(B1)), 1, TRUE), "No events this month")FILTER keeps only rows that match every condition, here the same month and the same year as B1, and SORT puts them in date order. FILTER returns an #N/A error when nothing matches, so IFERROR swaps in a short message instead. The year check also keeps blank rows out of the list. Format column A from row 11 down with a custom date such as ddd, mmm d so the dates read naturally.
I plan a month of newsletter sends this way. The Events tab is the working list I add to whenever an idea lands, and the calendar tab is what I look at on Monday morning to see where the gaps are.
How to highlight today and event days in the calendar
Conditional formatting with a custom formula can shade today's date, mark days that have events, and gray out days from the next or previous month. Each rule is written for the top-left cell of the range (A4), and Sheets adjusts it for every other cell, per Google's conditional formatting guide.
- Select A4:G9 on the Calendar tab.
- Click Format, then Conditional formatting.
- Under Format cells if, choose Custom formula is.
- Paste one of the formulas below into the value field, pick a fill or text color, and click Done.
- Click Add another rule and repeat for the next formula.
Rule | Custom formula | Suggested style |
|---|---|---|
Today | =A4=TODAY() | Bold text with a strong fill |
Days with an event | =COUNTIF(INDIRECT("Events!A2:A"), A4)>0 | A light fill |
Days outside the month | =MONTH(A4)<>MONTH($B$1) | Gray text |
Two details make these work. The dollar signs in $B$1 lock that reference so every cell compares itself with the same input date, while A4 shifts from cell to cell. And conditional formatting can only refer to the sheet it lives on, so the events rule reaches the Events tab through INDIRECT, which is the workaround Google gives on the same page. COUNTIF then counts how many events fall on each date.
TODAY reflects the date the spreadsheet last recalculated, so the highlight moves on by itself. Google notes that TODAY is a volatile function that can slow a large sheet; one rule on 42 cells won't be noticed.
Switching months
Type a new date in B1, such as 1/1/2027, and the title, the grid, the highlights and the events list all update. To keep a past month on screen while you plan the next one, duplicate the Calendar tab and give each copy its own date in B1.
How to make a simple typed-in calendar in Google Sheets
A typed-in grid is quicker when you want to write notes straight into each day and you only need one month. It doesn't move to the next month by itself, but it leaves room under each date for text, and the only formula it uses is a simple +1 from one day to the next.
- Type the month and year in A1, merge A1:G1 with Format and Merge cells, and center it.
- Type the day names across A2:G2.
- In row 3, find the column for the weekday of the 1st and type the full date there (for December 2026, 12/1/2026 goes in C3, under Tue).
- In the next cell to the right, type =C3+1 and fill it across to G3.
- Leave row 4 empty for notes. In A5, type =G3+1, then =A5+1 in B5, and fill across. Repeat the pattern for each week, with a notes row under every date row.
- Format the date rows with the custom format d, make the notes rows tall, and delete any dates that spill into the next month.
When I use this version, it's for something with a hard end, like a single month of launch prep. The notes rows hold who's doing what, and I don't need it to roll over afterward. For anything that repeats, the formula version saves the rebuild.
How to share or print a Google Sheets calendar
Share the calendar from the Share button: add people by email and pick Viewer, Commenter or Editor for each, or open General access and choose Anyone with the link for a link that works without an invite. Google Drive's sharing guide covers both.
For a shared team calendar I give most people Commenter and only the one or two who manage the Events tab Editor. Comments catch the "can we move this?" conversations without anyone changing a date by accident.
To print it, click File, then Print, choose Current sheet, and set Orientation to Landscape so all seven days fit across the page. Google's print guide lists the rest of the settings, including paper size, margins and headers.
Common problems with a Google Sheets calendar
- The grid shows long numbers like 46355: the cells are formatted as numbers. Apply the custom date format d to A4:G9 (Step 4).
- The grid shows an error instead of dates: something is typed in A4:G9 besides the formula in A4. Clear those cells so the dates have room to spill.
- The dates sit under the wrong weekday: the day-name headers and the WEEKDAY type disagree. Sunday headings need the first formula; Monday headings need the version with , 2.
- B1 isn't recognized as a date: it was entered as text. Retype it in your spreadsheet's date format, or use the DATE function, such as =DATE(2026, 12, 1).
- The events list says No events this month: check that the Events dates are real dates rather than text, and that they fall in the month and year in B1.
- Event days aren't highlighted: the events rule needs INDIRECT around the Events range, and the tab name inside the quotes must match the tab exactly.
When Google Calendar is the better choice
A Google Sheets calendar is a planning grid, not a scheduling tool: it won't send reminders, show up on your phone's calendar, or stop two meetings landing on the same hour. If the dates are meetings with times, invitations and people to notify, put them in Google Calendar instead. How to use Google Calendar covers events, sharing and booking pages, and automating Google Calendar covers reminders and daily agendas.
My split is simple. Anything with a start time and other people goes in the calendar app. Anything that's a plan, a rota or a schedule of deliverables lives in the sheet, where I can sort it, filter it and see the whole month at once.
Next steps
- Build the Calendar tab once with the SEQUENCE formula and the custom d format.
- Add the Events tab and the FILTER list under the grid.
- Set up the three highlight rules: today, event days and days outside the month.
- Share it with the right roles, then change B1 when a new month begins.
Frequently asked questions
How do I make a calendar in Google Sheets?
Type a date from the month you want in one cell, then use =SEQUENCE(6, 7, start) in the top-left cell of a 7-column grid, where start is the Sunday or Monday on or before the 1st. Format the grid with the custom date format d so it shows day numbers.
Does Google Sheets have a calendar template?
Google Sheets has a Template Gallery at the top right of its home screen, worth checking for a calendar layout first. If nothing there fits, the formula grid in this guide works as a reusable template you build once.
How do I make a Google Sheets calendar update automatically each month?
Base the grid on one input cell and calculate the 1st of that month with EOMONTH. Changing the input date, or setting it to =TODAY(), redraws the whole calendar.
How do I start the week on Monday in a Google Sheets calendar?
Use WEEKDAY with type 2, which counts Monday as 1 and Sunday as 7, inside the SEQUENCE formula, and put Mon first in the day-name headers.
Can I add events to a calendar in Google Sheets?
Yes. Keep events on a separate tab with a date column, list the month's events with FILTER, and highlight event days in the grid with a conditional formatting rule that uses COUNTIF and INDIRECT.
Can a Google Sheets calendar sync with Google Calendar?
Not on its own. A spreadsheet calendar is a separate grid, so events you type into Sheets don't appear in Google Calendar unless you add them there or connect the two with an automation tool.