Get this free Excel weekly meal planner. Enter your favourite meals and their main ingredients. Click button to create weekly shopping list
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.
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.
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.
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.
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.
After you have entered the recipe names, 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.
If you download the Basic Meal Planner with Inventory, there are
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.
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:
In the screen shot below, ground beef is in the fridge freezer, and in the basement freezer, for a total of 3 pounds.
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.
If you download the Basic Meal Planner with Inventory, there are additional columns in the Meal_Ingredients table
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.
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)
After you have entered all the ingredients, you're ready to start the weekly meal planning.
There are 5 selection cells for each meal, and you can also add snacks, and other items you need to purchase.
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.
After you select each day's meals, click the Shopping List button at the top of the WeekPlan sheet.
If you download the Basic Meal Planner with Inventory, there are two filters at the top of the pivot table - Meal Item, and Need.
There are extra columns in the pivot table too:
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.
You don't need to read this section, unless you want to know how the macros work in the weekly meal planner.
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 shopping list by ingredient name.
Here's how the advanced filter works:
Shown below is the code that is in the weekly meal planner sample file.
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
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
Last updated: March 3, 2021 3:46 PM