PDF download Download Article
Make monthly and yearly interactive calendars in Excel
PDF download Download Article

While not known as a calendar program, you can use Excel to create and manage your calendar. If you don't want to create one yourself, you can use a free calendar template or use a Visual Basic (VB) code. You can also take a list of calendar events from a spreadsheet and import them into your Outlook calendar. Here's how to create a calendar in Microsoft Excel using your Windows or Mac computer.

Making a Calendar in Excel

To create a calendar using a template in Excel, click File and select New from Template. Type "calendar" into the search field and select a template. Click Create.

Method 1
Method 1 of 3:

Using a Calendar Template

PDF download Download Article
  1. Open Microsoft Excel. You should see the Excel home page. If you open an Excel file instead, click File in the top-left corner.
    • Creating a calendar from a template will allow you to create a blank calendar that you can fill in with events. It will not convert any of your data into calendar format. If you want to convert a list of Excel data into an Outlook calendar, see the last section instead.
  2. This is in the left panel. On some devices, you may need to click New from Template instead.
    Advertisement
  3. You can find the search bar below the list of premade templates. Results will load.
  4. Choose one depending on your personal needs. You may want to select a standard calendar format, an academic calendar, or a weekly schedule planner.
    • When you select a calendar, a pop-up menu will open with its full view and details.
  5. This is the green button. A new file will be created with your new template.[1]
  6. Once the template loads, you'll see your new blank calendar. The date will likely be incorrect, but you can usually change this using the menu that appears when you select the date.
    • Some templates have instructions within the text. You can delete the instructions as you complete them.
    • The process will be a little different depending on the template you are using. Usually, you can select the displayed year or month and then click the ▼ button that appears next to it. This will display the options you can pick from, and the calendar will adjust automatically.
    • You can usually set the day the week starts as well by selecting it and choosing a new one.
  7. Many templates will have a text box with tips that can inform you on how to change the dates or adjust other settings for the calendar template. You'll need to delete these tip text boxes if you don't want them to appear on your printed calendar.
  8. You can adjust the look of any of the elements by selecting one and then making changes in the Home tab. You can change the font, color, size, and more just like you would any object in Excel.
  9. After your calendar is configured correctly, you can begin entering events and information into it. Select the cell you want to add an event to and start typing. If you need to put more than one thing on a single day, you may have to get creative with your spacing.
  10. Advertisement
Method 2
Method 2 of 3:

Using Visual Basic Code

PDF download Download Article
  1. Before you can use Visual Basic codes in Microsoft Excel, you must have the Developer ribbon enabled.[2]
    • To enable the Developer ribbon, click File > Options > Customize Ribbon > Developer > Add > OK.
  2. This tab is at the top, between View and Help.
  3. This is in the Code section.
  4. This is at the top. A new window will open where you can paste a code.
  5. This goes into the module sheet.
      Sub CalendarMaker()
    
           ' Unprotect sheet if had previous calendar to prevent error.
           ActiveSheet.Protect DrawingObjects:=False, Contents:=False, _
              Scenarios:=False
           ' Prevent screen flashing while drawing calendar.
           Application.ScreenUpdating = False
           ' Set up error trapping.
           On Error GoTo MyErrorTrap
           ' Clear area a1:g14 including any previous calendar.
           Range("a1:g14").Clear
           ' Use InputBox to get desired month and year and set variable
           ' MyInput.
           MyInput = InputBox("Type in Month and year for Calendar ")
           ' Allow user to end macro with Cancel in InputBox.
           If MyInput = "" Then Exit Sub
           ' Get the date value of the beginning of inputted month.
           StartDay = DateValue(MyInput)
           ' Check if valid date but not the first of the month
           ' -- if so, reset StartDay to first day of month.
           If Day(StartDay) <> 1 Then
               StartDay = DateValue(Month(StartDay) & "/1/" & _
                   Year(StartDay))
           End If
           ' Prepare cell for Month and Year as fully spelled out.
           Range("a1").NumberFormat = "mmmm yyyy"
           ' Center the Month and Year label across a1:g1 with appropriate
           ' size, height and bolding.
           With Range("a1:g1")
               .HorizontalAlignment = xlCenterAcrossSelection
               .VerticalAlignment = xlCenter
               .Font.Size = 18
               .Font.Bold = True
               .RowHeight = 35
           End With
           ' Prepare a2:g2 for day of week labels with centering, size,
           ' height and bolding.
           With Range("a2:g2")
               .ColumnWidth = 11
               .VerticalAlignment = xlCenter
               .HorizontalAlignment = xlCenter
               .VerticalAlignment = xlCenter
               .Orientation = xlHorizontal
               .Font.Size = 12
               .Font.Bold = True
               .RowHeight = 20
           End With
           ' Put days of week in a2:g2.
           Range("a2") = "Sunday"
           Range("b2") = "Monday"
           Range("c2") = "Tuesday"
           Range("d2") = "Wednesday"
           Range("e2") = "Thursday"
           Range("f2") = "Friday"
           Range("g2") = "Saturday"
           ' Prepare a3:g7 for dates with left/top alignment, size, height
           ' and bolding.
           With Range("a3:g8")
               .HorizontalAlignment = xlRight
               .VerticalAlignment = xlTop
               .Font.Size = 18
               .Font.Bold = True
               .RowHeight = 21
           End With
           ' Put inputted month and year fully spelling out into "a1".
           Range("a1").Value = Application.Text(MyInput, "mmmm yyyy")
           ' Set variable and get which day of the week the month starts.
           DayofWeek = WeekDay(StartDay)
           ' Set variables to identify the year and month as separate
           ' variables.
           CurYear = Year(StartDay)
           CurMonth = Month(StartDay)
           ' Set variable and calculate the first day of the next month.
           FinalDay = DateSerial(CurYear, CurMonth + 1, 1)
           ' Place a "1" in cell position of the first day of the chosen
           ' month based on DayofWeek.
           Select Case DayofWeek
               Case 1
                   Range("a3").Value = 1
               Case 2
                   Range("b3").Value = 1
               Case 3
                   Range("c3").Value = 1
               Case 4
                   Range("d3").Value = 1
               Case 5
                   Range("e3").Value = 1
               Case 6
                   Range("f3").Value = 1
               Case 7
                   Range("g3").Value = 1
           End Select
           ' Loop through range a3:g8 incrementing each cell after the "1"
           ' cell.
           For Each cell In Range("a3:g8")
               RowCell = cell.Row
               ColCell = cell.Column
               ' Do if "1" is in first column.
               If cell.Column = 1 And cell.Row = 3 Then
               ' Do if current cell is not in 1st column.
               ElseIf cell.Column <> 1 Then
                   If cell.Offset(0, -1).Value >= 1 Then
                       cell.Value = cell.Offset(0, -1).Value + 1
                       ' Stop when the last day of the month has been
                       ' entered.
                       If cell.Value > (FinalDay - StartDay) Then
                           cell.Value = ""
                           ' Exit loop when calendar has correct number of
                           ' days shown.
                           Exit For
                       End If
                   End If
               ' Do only if current cell is not in Row 3 and is in Column 1.
               ElseIf cell.Row > 3 And cell.Column = 1 Then
                   cell.Value = cell.Offset(-1, 6).Value + 1
                   ' Stop when the last day of the month has been entered.
                   If cell.Value > (FinalDay - StartDay) Then
                       cell.Value = ""
                       ' Exit loop when calendar has correct number of days
                       ' shown.
                       Exit For
                   End If
               End If
           Next
    
           ' Create Entry cells, format them centered, wrap text, and border
           ' around days.
           For x = 0 To 5
               Range("A4").Offset(x * 2, 0).EntireRow.Insert
               With Range("A4:G4").Offset(x * 2, 0)
                   .RowHeight = 65
                   .HorizontalAlignment = xlCenter
                   .VerticalAlignment = xlTop
                   .WrapText = True
                   .Font.Size = 10
                   .Font.Bold = False
                   ' Unlock these cells to be able to enter text later after
                   ' sheet is protected.
                   .Locked = False
               End With
               ' Put border around the block of dates.
               With Range("A3").Offset(x * 2, 0).Resize(2, _
               7).Borders(xlLeft)
                   .Weight = xlThick
                   .ColorIndex = xlAutomatic
               End With
    
               With Range("A3").Offset(x * 2, 0).Resize(2, _
               7).Borders(xlRight)
                   .Weight = xlThick
                   .ColorIndex = xlAutomatic
               End With
               Range("A3").Offset(x * 2, 0).Resize(2, 7).BorderAround _
                  Weight:=xlThick, ColorIndex:=xlAutomatic
           Next
           If Range("A13").Value = "" Then Range("A13").Offset(0, 0) _
              .Resize(2, 8).EntireRow.Delete
           ' Turn off gridlines.
           ActiveWindow.DisplayGridlines = False
           ' Protect sheet to prevent overwriting the dates.
           ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _
              Scenarios:=True
    
           ' Resize window to show all of calendar (may have to be adjusted
           ' for video configuration).
           ActiveWindow.WindowState = xlMaximized
           ActiveWindow.ScrollRow = 1
    
           ' Allow screen to redraw with calendar showing.
           Application.ScreenUpdating = True
           ' Prevent going to error trap unless error found by exiting Sub
           ' here.
           Exit Sub
       ' Error causes msgbox to indicate the problem, provides new input box, 
       ' and resumes at the line that caused the error.
       MyErrorTrap:
           MsgBox "You may not have entered your Month and Year correctly." _
               & Chr(13) & "Spell the Month correctly" _
               & " (or use 3 letter abbreviation)" _
               & Chr(13) & "and 4 digits for the Year"
           MyInput = InputBox("Type in Month and year for Calendar")
           If MyInput = "" Then Exit Sub
           Resume
       End Sub
    
  6. This is in the top-left corner of Visual Basic.
  7. Visual Basic will close and apply the code.
  8. This is in the Code section of the Developer tab.
  9. You should see this underneath the Macro name header.
  10. This will run the code and create the calendar in Excel.
  11. A dialog box will open for the calendar's inputs. When prompted, type the month and year for the calendar, and then click OK.
  12. Advertisement
Method 3
Method 3 of 3:

Import Excel Data into Outlook

PDF download Download Article
  1. You can import data from Excel into your Outlook calendar. This can make importing things like work schedules much easier.
  2. Importing your list into Outlook will be much easier if your spreadsheet is formatted with the proper headers. Enter the following headers into the first row:
    • Subject
    • Start Date
    • Start Time
    • End Date
    • End Time
    • Description
    • Location
  3. The "Subject" field is the name of the event as it appears on your calendar. You don't need to enter something for every field, but you will need at least a "Start Date" as well as the "Subject."
    • Make sure to enter the date into the standard MM/DD/YY or DD/MM/YY format so that Outlook can read it properly.
    • You can make an event that spans multiple days by using the "Start Date" and "End Date" fields.
  4. Click File > Save As. Once you're finished adding events to your list, you can save a copy of it in a format that Outlook can read.
  5. This is a common format that can be imported into a variety of different programs, including Outlook.
    • If you're importing special characters, select the CSV UTF-8 version instead.
  6. You may need to enter a name and select a location first.
  7. Outlook comes with Office, and you'll generally have it installed if you have Excel installed. When Outlook is open, click the "Calendar" button in the lower-left corner to view your calendar.
  8. You'll see several options for handling Outlook data.
  9. This will open a new window for importing and exporting data into and out of Outlook.
  10. More options will appear.
  11. You'll be prompted to select the file you want to load from.
  12. You should usually be able to find it in your Documents folder if you didn't change the default location in Excel.
  13. It should be selected since you're in the Calendar view in Outlook.
  14. Your list will be processed and the events will be added to your Outlook calendar. You can find your events in the correct spaces, with times set according to your list. If you included descriptions, you'll see these after selecting an event.
  15. Advertisement

Community Q&A

Search
Add New Question
  • Question
    What holiday is it on the 21st march 2028?
    Community Answer
    Community Answer
    As far as I have found out, the only holiday in March in 2028 is Memorial Day, BUT it's on the 29th.
Ask a Question
200 characters left
Include your email address to get a message when this question is answered.
Submit
Advertisement

Tips

Submit a Tip
All tip submissions are carefully reviewed before being published
Name
Please provide your name and last initial
Thanks for submitting a tip for review!

You Might Also Like

Make a Calendar in WordMake a Calendar in Word
Create a Calendar in Google DocsCreate a Calendar in Google Docs
Make a Spreadsheet in ExcelMake a Spreadsheet in Excel
Make a Calendar
Make a Personal Budget on ExcelMake a Personal Budget on Excel
Set a Date in Excel Set a Date and Time in Microsoft Excel
Track your Bills in Microsoft ExcelTrack your Bills in Microsoft Excel
Create a Timeline in Excel Create a Timeline in Excel: SmartArt, Templates, and More
Create a Simple Checkbook Register With Microsoft ExcelCreate a Simple Checkbook Register With Microsoft Excel
Create a Form in a Spreadsheet Create a Form in Excel: Step-by-Step Guide
Create a Formula to Increase a Date by 1 Month Create a Formula to Increase a Date by 1 Month in Excel
Create a Custom Macro Button in ExcelCreate a Custom Macro Button in Excel
Use Macros in ExcelExcel Macros: How to Run, Record, and Use Macros in Excel
Make a Digital PlannerEverything You Need to Know to Make Your Own Digital Planner
Advertisement

About This Article

Rain Kengly
Co-authored by:
wikiHow Technology Writer
This article was co-authored by wikiHow staff writer, Rain Kengly. Rain is a tech writer and editor for wikiHow with over 5 years of professional writing experience. In the past, Rain has worked with other creative writers as a Writing Tutor at San Francisco State University and has published gaming features, guides, and news articles for a variety of media outlets. Rain shares a lifelong passion for writing and gaming and is eager to grow alongside new tech inventions. This article has been viewed 1,100,962 times.
How helpful is this?
Co-authors: 19
Updated: March 11, 2025
Views: 1,100,962
Categories: Microsoft Excel
Article SummaryX

1. Open Excel.
2. Search for a calendar template.
3. Select a template.
4. Set the correct dates.
5. Adjust visuals as needed.
6. Enter your events.

Did this summary help you?

Thanks to all authors for creating a page that has been read 1,100,962 times.

Reader Success Stories

  • Kathy M.

    Kathy M.

    Jul 18, 2018

    "I have 3 managers in my office with 3 different schedules. This will allow me to import their data into one..." more
    Rated this article:
Share your story

Is this article up to date?

Advertisement