Build a Content Calendar in Excel
By ExcelReady TeamUpdated 6 min read
The short answer
To build a content calendar in Excel, make one row per post with columns for publish date, day, channel, topic, owner and status. Turn it into a table, add a status drop-down, and use conditional formatting to colour weekends and overdue posts. Then count posts per channel and month with COUNTIFS, and list this week's posts with FILTER.
Key takeaways
- Use one row per post, not a grid of boxes. A list is easy to sort, filter and count.
- Store real dates, then show the day name with =TEXT(A2,"ddd").
- Build repeating dates with =A2+7 for weekly posts and =EDATE(A2,1) for monthly ones.
- Conditional formatting with WEEKDAY and TODAY flags weekend dates and overdue posts automatically.
- COUNTIFS with EOMONTH counts posts per channel for any month.
On this page+
A content calendar in Excel is a list of planned posts, one row each, with the date, channel, topic, owner and status. Add a few formulas and colour rules and it tells you what's due this week, what's late and how busy each channel is. This guide builds one step by step, for marketers, small business owners and anyone who plans social posts, blogs or newsletters.
Plan the columns first#
Start with a list, not a calendar grid. A list with one row per post can be sorted, filtered and counted; a grid of boxes can't. Here's a solid set of columns:
| Column | Header | What goes in it |
|---|---|---|
| A | Publish date | A real Excel date, like 3 Nov 2026 |
| B | Day | A formula that shows the weekday |
| C | Channel | LinkedIn, Blog, Newsletter and so on |
| D | Topic | A short working title |
| E | Owner | Who writes it |
| F | Status | Idea, Drafting, Scheduled or Published |
| G | Link | The live URL once published |
Select your headers and data and press Ctrl+T (Mac: ⌘T) to turn it into an Excel table. Tables add filter buttons, keep formatting consistent and copy formulas down to new rows by themselves. Freeze the header row with View > Freeze Panes > Freeze Top Row so it stays visible as the list grows.
Enter dates and show the day name#
Type dates in a format Excel recognises, such as 2026-11-03 or 3 Nov 2026, so they're stored as real dates. Then show the weekday next to each one:
=TEXT(A2,"ddd")For 3 November 2026 this returns Tue. Use "dddd" for the full name, Tuesday. Keeping the date and the day in separate columns means you can still sort by date. The guide to getting the day name from a date shows more formats, and you can practise date basics in a live sheet.
Real dates matter because every formula below compares them. If a date is stuck as text, it won't sort, count or colour correctly.
Fill repeating dates automatically#
Most calendars have a rhythm, like a LinkedIn post every Thursday or a newsletter each month. Let formulas create the dates:
| Rhythm | Formula (below the first date in A2) |
|---|---|
| Every week | =A2+7 |
| Every two weeks | =A2+14 |
| Same day every month | =EDATE(A2,1) |
| Last working day of the month | =WORKDAY(EOMONTH(A2,0)+1,-1) |
EDATE moves a date by whole months and handles short months for you. EOMONTH returns the last day of a month, and WORKDAY steps back to a weekday if that day falls on a weekend. For November 2026, the last formula returns Mon 30 Nov. The EDATE, EOMONTH and WEEKDAY lesson practises all three.
If a post later gets a fixed date, paste it as a value or type over the formula, so changing the first date doesn't move it.
Add a status drop-down#
A drop-down keeps status values consistent, which matters because your counts depend on exact text. "Published" and "published " (with a space) are different to a formula.
- Select the Status cells, for example F2:F200.
- Go to Data > Data Validation.
- Under Allow, choose List.
- In Source, type
Idea,Drafting,Scheduled,Published. - Click OK.
Do the same for Channel and Owner if you have a fixed list.
Colour weekends and overdue posts#
Conditional formatting colours cells by rule, so problems stand out without anyone checking line by line. Select the data rows (say A2:G200), go to Home > Conditional Formatting > New Rule > Use a formula to determine which cells to format, and add these rules:
| Rule | Formula | Suggested colour |
|---|---|---|
| Weekend dates | =WEEKDAY($A2,2)>5 | Light grey |
| Overdue | =AND($A2<TODAY(),$F2<>"Published") | Light red |
| Due in the next 7 days | =AND($A2>=TODAY(),$A2<TODAY()+7) | Light yellow |
WEEKDAY($A2,2) numbers Monday as 1 and Sunday as 7, so anything above 5 is Saturday or Sunday. TODAY returns the current date and updates every day, so the overdue colour moves on its own; see the TODAY function guide. The $ before A and F locks the column, so every cell in the row checks the same date and status.
The conditional formatting lesson walks through formula rules, and the guides to highlighting weekends and conditional formatting cover more patterns.
Count posts by channel and month#
A small summary shows whether a channel is overloaded or empty. Put the first day of a month in I1, like 1 Nov 2026, and the channel names down I3:I5. Then in J3:
=COUNTIFS($C$2:$C$200,I3,$A$2:$A$200,">="&$I$1,$A$2:$A$200,"<="&EOMONTH($I$1,0))This counts rows where the channel matches I3 and the date falls between the first and last day of that month. Fill it down for each channel. Change I1 to another month and the whole summary updates. To count by status instead, swap the channel column for the status column. The COUNTIFS function guide explains the criteria pairs.
In the exercise on this page, three LinkedIn posts fall in November 2026: 3, 12 and 26 November. The October and December posts are left out by the date limits.
List this week's posts with FILTER#
FILTER pulls matching rows into a separate list that updates by itself, perfect for a "This week" panel at the top of the sheet:
=FILTER(A2:F200,(A2:A200>=TODAY())*(A2:A200<TODAY()+7),"Nothing scheduled")The * between the two conditions means AND: the date is today or later, and less than seven days away. FILTER needs Excel 2021 or Microsoft 365; in older versions, use the table's filter buttons with a date filter instead. See the FILTER function guide.
If your calendar is part of a bigger plan with phases and deadlines, the guide to building a project timeline shows a Gantt-style view, and the article on Excel skills for marketing jobs covers what else marketing roles expect.
Practise it#
A content calendar is mostly date formulas plus a few rules. Practise EDATE, EOMONTH and WEEKDAY in a live spreadsheet: you move dates by months, find month ends and check weekdays, and each formula is checked instantly. Then try the conditional formatting lesson to colour overdue posts, and the exercise on this page to count a month's LinkedIn posts.
Try it yourself
This is a live spreadsheet. Type the formula in the green cell and press Enter.
How many LinkedIn posts are planned for the month in F2 (November 2026)? In G2, use COUNTIFS on B2:B8 for LinkedIn, and on A2:A8 for dates ">="&F2 and "<="&EOMONTH(F2,0).
| A | B | C | D | E | F | G | H | |
|---|---|---|---|---|---|---|---|---|
| 1 | Status | Month | ||||||
| 2 | Published | |||||||
| 3 | Scheduled | |||||||
| 4 | Drafting | |||||||
| 5 | Idea | |||||||
| 6 | Drafting | |||||||
| 7 | Idea | |||||||
| 8 | Idea | |||||||
| 9 | ||||||||
| 10 | ||||||||
| 11 |
Tip: Three pairs: the channel, then the date range twice (from F2 to the end of that month).
Practise this in a lesson
Frequently asked questions
How do I make a content calendar in Excel?
Create a list with one row per post and columns for date, channel, topic, owner and status. Format it as a table, add a drop-down for status, and use conditional formatting to highlight overdue posts.
Should a content calendar be a list or a monthly grid?
Keep the data as a list. A list can be sorted, filtered and counted with formulas. If you want a monthly grid view, build it on a second sheet that reads from the list.
How do I highlight overdue posts in Excel?
Use a conditional formatting rule with a formula such as =AND($A2<TODAY(),$F2<>"Published"). It colours any post whose date has passed and that isn't marked Published.
How do I count posts per month in Excel?
Use COUNTIFS with a start and end date: =COUNTIFS(A2:A100,">="&I1,A2:A100,"<="&EOMONTH(I1,0)), where I1 holds the first day of the month. Add another pair to count one channel.