Contextures

Home > Templates > Meal Planner

Excel Weekly Meal Planner

Get this free Excel weekly meal planner, based on the Excel workbook that I use for my menu plans every week. Enter your favourite meals and their main ingredients, or search for new recipes. Click button to create weekly grocery shopping list, and print the weekly calendar to put on your fridge door, for Sunday to Saturday.

check your recipes for a specific ingredient

Excel Meal Planner Intro

To help you make the job of meal planning easier, you can use this Excel weekly meal planner template. Enter your favourite meals, list their basic ingredients, and click a button to create a shopping list for a week's meals. To see a quick overview of how the Excel Weekly Meal Planner works, watch this short video.

Thanks to Jimmy Pena, who created the Recipe Selector tool in the meal planner.

Note: For special occasions, see my Excel holiday dinner planner.

Select Recipes

The first step is to choose some recipes for your weekly meals. There are a few recipes in the sample file, to get you started. To find more recipes, you can look through your collection of cookbooks, or go to the Recipes sheet in the Excel Weekly Meal Planner.

On the Recipes sheet, enter an ingredient name in cell A2, then click the Get Recipes button. A macro runs, and pulls a list of recipes for the selected ingredient. To see one of the recipes, click its link. Then, if you like the recipe, print a copy, to refer to later.

Excel recipes finder

Meal Planner Recipes

You can also search the recipes that are already entered on the Meal_Ingredients sheet. For example, you might want to use a specific ingredient from your pantry or fridge, before its "Best Before" date.

  • Go to the MyRecipes sheet.
  • Enter an ingredient name in cell A2
  • Click the Get My Recipes button, to see a list of recipes that are on the Meal_Ingredients sheet.

check your recipes for a specific ingredient

Enter the List of Meal Items

After you select your recipes, you will enter them on the Meal_Items worksheet, if they haven't been entered already. There are a few sample items in the Excel weekly meal planner, and you can add new items to the list, at any time.

To add a new recipe:

  1. Go to the Meal_Items sheet
  2. In column B, enter the name of the dish
  3. In column C, you can enter a link to a recipe online, or type a cookbook name and page number.

NOTE: You can also enter items that you purchase weekly, such as "Milk, weekly", or "Coffee, ground". Later, those items can be added to the "Other" row on the weekly menu, so they get added to the shopping list.

meal list

List Recipe Ingredients and Costs

After you have entered the recipe names in the spreadsheet, go the Recipe_Ingredients worksheet. Soon, you will be selecting the ingredients for your recipes, and those ingredients should be entered in the cost list first.

To check for ingredients, and add new ones:

  1. Go the Recipe_Ingredients worksheet
  2. Sort the list groceries by ingredient name, to see what ingredients have already been entered.
  3. If an ingredient that you need is NOT in the list, enter it in column B.
  4. In column C, enter the ingredient category, such as Meat or Dairy -- you can create your own categories, if you prefer..
  5. In column D, enter the unit, such cup, or lb, or 14 oz can. For most items, use the unit type that you'd see in most of your recipes, such as "cup" for sugar, even though you buy it in a bag.
  6. (optional) In column E, enter the unit price, or an approximate price, at your grocery shop.

ingredients and costs

Meal Planner with Inventory

If you download the Basic Meal Planner with Inventory, there are

  • additional columns in the ingredients table
  • an Admin_Lists sheet, with a locations table

Ingredient Storage Locations

On the Admin_Lists sheet, there's a small table with locations where you might store your ingredients at home. You can edit this list, and add new locations, or delete storage locations that you don't need.

storage locations

Ingredient Inventory

On the Recipe_Ingred sheet, there are location columns at the left side of the Ingredients table.

For any ingredient that you want to track:

  • Select a location in the Loc01 column
  • Enter the current quantity on hand in the Loc01 Qty column
  • If the ingredient is also stored in another location, enter that information in the Loc02 and Loc02 Qty columns
  • The Loc Qty column has a formula that sums the amounts for the 2 locations.

In the screen shot below, ground beef is in the fridge freezer, and in the basement freezer, for a total of 3 pounds.

ingredient inventory details

List the Meal Ingredients

After you have entered the recipe names and ingredient costs, go the Meal_Ingredients worksheet. It has a list where you will enter the main ingredients for each recipe.

NOTE: You don't need to enter ingredients that you usually have on hand, such as salt and pepper, or cooking oil.

  1. In column B, select the name of one of your meal items from the drop down list.
  2. In column C, select the name of an ingredient from the drop down list. If the ingredient isn't in the list, go to the Recipe_Ingred list and add it. Or, just type the missing ingredient in the cell, and no cost information will be calculated.
  3. In column D, enter the quantity required for the selected recipe. For example, type a 2, if the recipe calls for 2 cans of beans.
  4. In columns E:F, formula will display the ingredient information that you entered on the Recipe_Ingred sheet.
  5. In columns G:J, formulas in the grey cells calculate the costs for the shopping list.

enter recipe ingredients

Meal Planner with Inventory

If you download the Basic Meal Planner with Inventory, there are additional columns in the Meal_Ingredients table

  • On Hand
  • Need Cost
  • Need

Those columns have formulas that calculate the amounts for the shopping list. You can ignore those columns and formulas -- they're just used for the shopping list.

On Hand calculation columns

NOTE: The On Hand column might not show the total amount that you have on hand. The formula splits the total amount by the number of times that ingredient in used in the current week's menu.

For example, we have 3 pounds of ground beef on hand, and it's used 3 times this week, so each row shows 1 pound in the On Hand column (3 divided by 3 = 1)

On Hand calculation

Select the Weekly Meals

After you have entered all the ingredients, you're ready to start the weekly meal planning.

  1. Go to the WeekPlan sheet, where there is a one-week calendar, with a column for each day of the week.
  2. In each column, select items for that weekday's meals, by using the data validation drop down lists in columns C:E.
  3. There are 5 selection cells for each meal, where you can select a main dish, side dishes, and other food items.
  4. In the Snacks section, you can add snack foods, and other food items you need to purchase

select meals

Other Items and Notes

If there are other items to add to the shopping list, enter those in the "Other" row.

  • For example, add "Milk, weekly" there, insteading of listing Milk at each meal.
  • Or, enter the cleaning products, toiletries, and other items that you usually put on your grocery list.

select other items

Create the Weekly Shopping List

After you select each day's meals, click the Shopping List button at the top of the WeekPlan sheet.

shopping list button

Meal Planner with Inventory

If you download the Basic Meal Planner with Inventory, there are two filters at the top of the pivot table - Meal Item, and Need.

  • Use the Meal Item filter if you just want to see the items for a specific meal
  • By default, the Need filter is set to TRUE, so the list only shows items you need to purchase

shopping list filters

There are extra columns in the pivot table too:

  • On Hand - the total quantity in the inventory
  • Buy - a pivot table calculated field that shows the quantity you need to buy (the difference between recipe quantity and quantity on hand)
  • Need Cost - total price of buying the quantity shown in the "Buy" column.

extra columns in pivot table

Print the Shopping List

After the shopping list has been created, the items are summarized by category, in an Excel Pivot Table. You can print the list, add any other grocery items that you need, and then head to the grocery store.

shopping list

Weekly Meal Planner Macros

NOTE: You don't need to read this section, unless you want to know how the macros work in the weekly meal planner.

Shopping List Button

When you click the Shopping List button, it runs a macro, which uses an advanced filter to copy all the ingredients for the selected meals to the ShoppingList sheet, and sorts the printable meal plan shopping list by ingredient name.

Here's how the advanced filter works:

  • As you select each day's meal, that meal's ingredients are marked with a 1 on the Meal_Ingredients worksheet, in the "List" column
  • On the Meal_Items sheet, there is a criteria range that's used in the advanced filter. It checks for ingredients that are marked with a 1 (or higher) in the "List" column

criteria range

Macro Code

Shown below is the code that is in the weekly meal planner sample file.

  • The first macro -- CreateShoppingList -- is on a regular code module.
  • The remaining code is on the sheet module for the Recipes worksheet

CreateShoppingList Macro

In the sample file, you'll find this code on a regular code module. It creates the shopping list, based on the selected meals.

Sub CreateShoppingList()
Dim wsShop As Worksheet
Dim wsIngred As Worksheet
Dim wsList As Worksheet
Dim wsItems As Worksheet
Dim wsPrint As Worksheet

Set wsShop = Sheets("ShoppingList")
Set wsIngred = Sheets("Meal_Ingredients")
Set wsItems = Sheets("Meal_Items")
Set wsPrint = Sheets("ShopListPrint")

wsIngred.Columns("B:J").AdvancedFilter _
    Action:=xlFilterCopy, _
    CriteriaRange:=wsItems.Range("CritShop"), _
    CopyToRange:=wsShop.Range("ExtShop"), _
    Unique:=False
    
With wsShop
    .Cells(1, 2).CurrentRegion.Sort _
        Key1:=.Range("C1"), _
        Order1:=xlAscending, _
        Header:=xlYes
End With

With wsPrint
    .PivotTables(1).PivotCache.Refresh
    .Activate
End With

End Sub

Recipes Worksheet Code

In the sample file, this code is on the Recipes sheet code module (right-click the Recipes sheet tab, click View Code, and view the code there)

Option Explicit

Private Sub CommandButton1_Click()
  Call GetRecipes
End Sub
'------------------------------
Sub GetRecipes()
  On Error GoTo ErrorHandler

  Const RangeToImport As String = "$A$10"

  ' delete existing xml map (if any)
  If ActiveWorkbook.XmlMaps.Count > 0 Then
    ActiveWorkbook.XmlMaps.Item(1).Delete
  End If

  ' clear out range to prep for new import
  Range(RangeToImport).CurrentRegion.Cells.Clear

  ' import web XML to destination range
  ActiveWorkbook.XmlImport URL:= _
        "https://www.recipepuppy.com/api/?q=" _
        & URLEncode(Range("SelItem").Value) _
        & "&format=xml", ImportMap:=Nothing, _
        overwrite:=True, Destination:=Range(RangeToImport)

ProgramExit:
  Exit Sub
ErrorHandler:
  MsgBox Err.Number & " - " & Err.Description
  Resume ProgramExit
End Sub

'------------------------------

Public Function URLEncode(EncodeStr As String) As String
' https://www.freevbcode.com/ShowCode.Asp?ID=5137
Dim i As Integer
Dim erg As String

  erg = EncodeStr

  ' *** First replace '%' chr
  erg = Replace(erg, "%", Chr(1))

  ' *** then '+' chr
  erg = Replace(erg, "+", Chr(2))

  For i = 0 To 255
    Select Case i
        ' *** Allowed 'regular' characters
      Case 37, 43, 48 To 57, 65 To 90, 97 To 122
      Case 1        ' *** Replace original %
        erg = Replace(erg, Chr(i), "%25")
      Case 2        ' *** Replace original +
        erg = Replace(erg, Chr(i), "%2B")
      Case 32
        erg = Replace(erg, Chr(i), "%20")
      Case 3 To 15
        erg = Replace(erg, Chr(i), "%0" & Hex(i))
      Case Else
        erg = Replace(erg, Chr(i), "%" & Hex(i))
    End Select
  Next

  URLEncode = erg

End Function

Get the Excel Weekly Meal Planner

There are several menu planners, so download the meal plan templates that you need.

  • Basic Planner: You can get a copy of the Excel Weekly Meal Planner and add your own meals and ingredients. The file is in xlsm format, and is zipped. After you unzip the file and open it, enable macros, so you can create the shopping list.
  • Basic Planner with Inventory: If you want to keep track of which ingredients you have on hand, download the Excel Weekly Meal Planner with Inventory. The file is in xlsm format, and is zipped. After you unzip the file and open it, enable macros, so you can create the shopping list.
  • Basic Planner with Meal Type: To choose meal items based on meal type (breakfast, lunch, dinner, snacks), download the Excel Weekly Meal Planner with Meal Type. (for Excel 365) This makes the drop down lists shorter, and easier to find what you need. The file is in xlsm format, and is zipped. After you unzip the file and open it, enable macros, so you can create the shopping list.
  • Serving Count: If the number of people changes at different meals, you can use the Excel Weekly Meal Planner Servings workbook, to get a more accurate shopping list. On the WeekPlan sheet, enter the number of people for each meal. Also, enter the number of servings for each recipe on the Meal_Items sheet.
  • Meal Frequency: For each meal item, set a number of times that you'd like to serve that dish each year. For example, enter 26 if you want to have it every other week. Or, enter 12, for a once-a-month dish. Then, select your entree for each day, and all the other food items that you want to include. Get the Meal Frequency Planner workbook.

More Tutorials

Chicken Dinner Planner

Holiday Dinner Planner

Excel Calorie Counter

Data Validation Basics

Advanced Filter Introduction

Pivot Table Introduction

Excel Weekly Meal Planner contextures.com

Excel Weekly Meal Planner contextures.com

Last updated: August 1, 2023 2:31 PM