
We all have atleast one story of how that one time the boss / co-worker / classmate / cat ruined the carefully crafted excel spreadsheet by mucking up the formulas or disturbing the formatting. There are 3 very easy solutions to prevent this problem,
- Write an unleash_a_pack_of_wild_cats_when_someone_messes_with_the_file () macro: It is not an elegant solution, and cats are not very consistent, but it can work.
- Move to marketing department, you dont need to send excel files any more, just ppts. 😛
- Or, read this post and learn 10 awesome tips on how to boss proof your excel files.
So here is the list of 10 tips to make better excel spreadsheets. I suggest using all these tips for a perfect boss proof workbook.
Restrict The Work Area Few Columns and Rows
Not all spreadsheets have 256 columns and 65000 rows of data. So why show the entire grid when you can, say, just show the 44 rows and 23 columns in which the sales report is presented.

To restrict the work area,
- Select the first column you dont want to see (24th column) and press CTRL+SHIFT+RIGHT ARROW. Now Right click and select “Hide” option.
- Select the first row you dont want to see (45th row) and press CTRL+SHIFT+DOWN ARROW. Now right click and select “Hide” option.
Lock Formula Cells And Protect The Worksheet
Formulas are the most vulnerable part of an excel sheet. You accidentally edit something, say in payroll sparesheet, and you just gave 3200% bonus to someone in the organization. That is alright if that someone is a CEO of a bailed-out bank, but in all other cases, you end up spending a sweet afternoon trying to figure out what went wrong.

So, it is better to lock the workbook formulas and protect the worksheet so that no one accidentally erase the formulas or mess with them. To do this follow the steps in the illustration above.
You can use the same trick to lock the charts and other worksheet objects.
Freeze Panes So that Your boss Knows what she is Reading

Freeze panes is a very useful feature. It locks the important items on the top so even when you scroll down you still see them. (You can do the same for columns, thus seeing the first few column even when scrolling left).
Bonus tip: Use excel tables (new feature in Excel 2007) so that you dont need to freeze panes. Learn more.
Hide Un-necessary / Calculation Sheets
It is fairly common for excel workbooks to have tens worksheets, some with data, some with calculations, some with intermediate stuff and only one or two sheets with actual outcome (like a dashboard or a report).

There is no reason to think that all these worksheets should be visible all the time to the boss. While it makes sense to have the data and calculations visible so that someone can audit the worksheet, I am sure you dont want your boss to waster her time doing that. So here is a handy tip:
- Select all the worksheets other than the output sheets and hide them.
Hide Rows / Columns
If for some reason, hiding worksheets is not possible, you can still try hiding rows and columns. This is a very good way to prevent someone from accidentally messing a with a row of “really big and complicated formulas”.

Just select the rows / columns you want to hide and right click and select the “hide” option.
Include Cell – Comments / Help Messages
We all know bosses have a busy mind. They dont have time to remember (or know) every little thing. Heck, sometimes they dont even know what somethings are.

I suggest using cell comments and help messages to give right information / guidelines to the spreadsheet end user, like “enter your age in this cell”. They are easy to implement and totally non-intrusive.
- To include a cell comment, select the cell and press SHIFT+F2 and write the comment.
To include a cell message, select the cell, go to data validation, go to “input message” tab and type what you want.
Data Validations, Error Messages
Spreadsheets are complicated things that are carefully crafted with umpteen pre-conditions and assumptions. I am sure there is at least one excel file out there that will only work if a cat enters the input. But we are not talking about cats, the point is, it is important that right data is fed to the worksheet before the formulas (or charts or payroll macro etc.) can work. That is where data validation can help.

It is very easy to set up data validation in excel. Just select the cell and go to data validation (in Data ribbon / menu). There are several ways in which you can set up data validations,
- You can show an incell drop down box and ask users to pick from a list
- You can specify the type of data allowed (dates, times, numbers, text)
- You can specify the length of data
- You can specify the conditions on data (like between 2 numbers, less than a given date etc.)
- You can even use formulas to make your own data validations [example]
There are several examples of using data validation in this site. Go check.
Use Consistent Colors And Schemes
Anything looks better when it is consistent, even when it is internally screwed up. That same rule applies to excel workbooks as well. It will make your boss feel comfortable and relaxed to see an excel workbook with consistent colors and (simple) schemes.

I suggest using excel cell styles to define the styles for your workbooks. This ensures consistency and you dont have to spend after hours formatting the worksheets. Read more about cell styles.
Name and Color Worksheet Tabs Appropriately
It doesnt matter if you have designed an awesome excel dashboard, your boss can be still pissed because the sheet name is “Sheet 69”. That brings us to the last and final point.

Use appropriate names (and may be tab colors) for the worksheet tabs. This makes the navigation easy and boss proof.
Learn how to color excel worksheet tabs.
Before Closing The Workbook, Select Cell A1 On The Correct Sheet
Just before you finally save the workbook and e-mail it to the boss, make sure you are on the right worksheet (ie the dashboard or the report) and selected cell A1. The ensures that when the boss opens the workbook, she sees the right tab with right information, not some calculations or formulas.
That is all, you have just learned a handful of trick to impress your boss.
Share your boss proofing tricks for excel
Got an awesome idea that has been working on your boss? Share it with us in comments. I love to hear your stories and how you are using excel to further your career.
Be awesome, Learn few more excel tricks:
We at PHD have a simple goal – “to make you awesome in excel and charting”. Here is a list of articles I recommend reading if you are new here or just wanted to be more.
- 15 fun and exciting excel tips – who say spreadsheets are boring?
- 15 Excel formulas beyond IF() and SUM()
- 15 Excel productivity tips that you dont know
- 10 things about Excel 2007 that you should know to work better
- More articles on excel productivity
Dilbert cartoon from Dilbert.com














25 Responses to “Shift Calendar Template – FREE Download”
Hi Chandoo,
your recent postings include only Excel 2007 templates. Unfortunately the company I work at still runs Excel 2003. Is it possible to get your awesome files in other excel version as well?
Thanks so much for your great excel stuff!
Is it possible to do this for shifts with hours instead of days? To organise a three shift day?
Thanks in advance,
Stelios
In my organization there are 45 employees i need split then into three shifts ex:A shift:14,B shift:14,C shift:14 and week off:3 kindly help me on this.
@Masthan
You need to understand what rules your company has for the various shifts / roster combinations
Chandoo, I once did a shift control spreadsheet for my team. I put one person in each line, the columns were the days. I put a shift code in each cell indicating in which shift that person should work, or if the person were out that day. I have two codes for being out. One is for vacations and one is to compensate days worked in weekends. This way I was able to count how many persons I have in each shift, how many were on vacations and how many were out compensating (that's the term we use here) weekend worked hours.
Later I included the possibility of a person be in two lines one for normal hours other for overtime. This is mainly used for planning purposes. If you would like I can send you an example. The only problem of this spreadsheet is that we don't have a person view, only this consolidated view.
Hi George, I would like to have a copy of your spreadsheet if you can share it.
Thanks in advance, Chuck
Hi Chandoo,
Where is the code located ? is it VBA ? If so , how do you hide it ? Or it is .NET ?
Thx
@Idan
.
No VBA or code, it is all done with Mirrors.
Only Joking,
.
But there is no VBA or code,
It is all done with Named Formulas and Lookups.
Have alook at the cells in the calander area and Named Formulas in the Formulas, Name Manager Tab.
How can i calculate between two or more different workbooks? Please, reply me as early as possible.
@Anand
Open the workbooks you want to link to
Start a formula = and click and change between workbooks as required.
You can use the View, Switch window menu to change workbooks mid formula
The format for using workbooks is
=[Workbook.xlsm]Sheet1!$A$1
or
=SUM('[Book2.xls]Sheet1'!$A$1:$D$10)
etc
Hi Chandoo,
I am working with a call centre wherein i ned to update at the month end 20 to 30 employees login hours which are defict to track it at the month end is very difficult is there any template which can be made to track that why on a particular day a guy who needs to be on calls was why not on calls.
Thank you so much Chandoo. This is really helping me. As usual, you rock.
What's FortyTwoDays and Calendar in Name manager?
Both are unused and FortyTwoDays doesn't make any sense.
I have a SQL db that contains records of events scheduled/completed on a particular date. Can this method ous building a calendar be used to display those events on the respective day?
Positively awesome!
I'm attempting to help a friend create a schedule for adult classes - and of course its not"paid help". Here is the scenario:
20 classes, instructor, room#, student class size, start date, number of class days (need to subtract weekends)
class
instructor
room
students
start
#days
PATH
karen
201
21
01/01/13
11
BILLING
jane
401
15
01/12/13
13
MEDISOFT
mike
301
11
01/25/13
9
he'd like to see these classes show up in different colors within the same month's calendar chart. He can draw it, but I'd like to see it done automatically through data, and I just can't visualize it, but I KNOW this will work - can you help?
Jan 🙂
Dear chandoo,
Try many way to download still can't access. Any way we want to try out 3 shifts with 3 guys in a group .eg Group A Morn, Group B Night and Group C Rest. And every each group must work on sunday to take turns. In fact we are security teams so that's why sunday is required to work. Pls guide and show how to put in the working calendar. Thank you in advance.
I've been trying to copy and/or recreate this to use in a workbook I'm doing for the transportation department I'm working for. I need to have the calendar on the first sheet in my document (it has graph's from data on another sheet). I'm trying to use it to track (with the conditional formatting) accidents and injuries. I've redone the conditional formatting to do 4 different accident types (no injury, near miss, OSHA recordable injury and work loss injury), but when I enter the formula's you have in the calendar portion where it says "DateOfFirst-FirstWeekDay" I can't figure out how you did that. Are you able to help?
I would like to use Excel to solve the following problem for a community work. I want to create a Driver schedule for a given month from a pool of volunteers for a community service. Each of these volunteers can drive only on specific days in a week. I would like to populate the driving schedule for each weekday with primary, secondary and tertiary drivers in a random fashion so that I do not overburden one person. I would greatly any help you can provide.
Hi chandoo,
Thanks for your valuable effort for create this template and let me know how to add multiple employees in the the Roaster.
Hi Chandoo,
This article on shift roaster is very helpful. Could you please let me know how i can use the same for n number of resources who work 24/7, considering their leaves and holidays?
Thanks,
Savitha
Hi Chandoo,
This article on shift roaster is very helpful to all. Could you please let me know how i can use the same if I want to add for some more shifts, since the color is not getting change if I add more shifts like 4,5 etc.,
Thanks,
Murali
nice post
How can I change the date to 2017 under Shift Data worksheet.
solution 1:
mydata=B2:C16
stoplist=E2:E8
=LET(RNG,A2:A16,SMR,C2:C16, F,(RNG=E2)+(RNG=E3)+(RNG=E4)+(RNG=E5)+(RNG=E6)+(RNG=E7)+(RNG=E8),SUM(SMR)-SUM(SMR*F))
=LET(RNG,A2:A16,SMR,C2:C16,RH,N(B2:B16=B2), F,(RNG=E2)+(RNG=E3)+(RNG=E4)+(RNG=E5)+(RNG=E6)+(RNG=E7)+(RNG=E8),TOT,SUM(SMR)-SUM(SMR*RH*F),SUM(SMR*RH)-SUM(SMR* RH*F))
ALTERNATE SOLUTION
=SUM(C2:C16)-SUM(FILTER(C2:C16,ISNUMBER(BYROW(A2:A16,LAMBDA(a,TOROW(SEARCH(a,E2:E8),2))))))
=SUM((B2:B16=B2)*(C2:C16))-SUM((ISNUMBER(BYROW(A2:A16,LAMBDA(a,TOROW(SEARCH(a,E2:E8),2))))*(B2:B16=B2)*(C2:C16)))
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Replaced Value" = Table.ReplaceValue(Source,null,";",Replacer.ReplaceValue,{"Column1"}),
#"Transposed Table" = Table.Transpose(#"Replaced Value"),
#"Removed Other Columns" = Table.SelectColumns(#"Transposed Table",{"Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13", "Column14", "Column15", "Column16", "Column17", "Column18", "Column19", "Column20", "Column21", "Column22", "Column23", "Column24", "Column25", "Column26", "Column27", "Column28", "Column29", "Column30", "Column31", "Column32", "Column33", "Column34", "Column35", "Column36", "Column37", "Column38", "Column39", "Column40", "Column41", "Column42", "Column43", "Column44", "Column45", "Column46", "Column47", "Column48", "Column49", "Column50", "Column51", "Column52", "Column53", "Column54", "Column55", "Column56", "Column57", "Column58", "Column59", "Column60", "Column61", "Column62", "Column63", "Column64", "Column65", "Column66", "Column67", "Column68", "Column69", "Column70", "Column71", "Column72", "Column73", "Column74", "Column75", "Column76", "Column77", "Column78", "Column79", "Column80", "Column81", "Column82", "Column83", "Column84", "Column85", "Column86", "Column87"}),
#"Merged Columns" = Table.CombineColumns(#"Removed Other Columns",{"Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13", "Column14", "Column15", "Column16", "Column17", "Column18", "Column19", "Column20", "Column21", "Column22", "Column23", "Column24", "Column25", "Column26", "Column27", "Column28", "Column29", "Column30", "Column31", "Column32", "Column33", "Column34", "Column35", "Column36", "Column37", "Column38", "Column39", "Column40", "Column41", "Column42", "Column43", "Column44", "Column45", "Column46", "Column47", "Column48", "Column49", "Column50", "Column51", "Column52", "Column53", "Column54", "Column55", "Column56", "Column57", "Column58", "Column59", "Column60", "Column61", "Column62", "Column63", "Column64", "Column65", "Column66", "Column67", "Column68", "Column69", "Column70", "Column71", "Column72", "Column73", "Column74", "Column75", "Column76", "Column77", "Column78", "Column79", "Column80", "Column81", "Column82", "Column83", "Column84", "Column85", "Column86", "Column87"},Combiner.CombineTextByDelimiter("|", QuoteStyle.None),"Merged"),
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Merged Columns", {{"Merged", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Merged"),
#"Added Prefix" = Table.TransformColumns(#"Split Column by Delimiter", {{"Merged", each "|" & _, type text}}),
#"Replaced Value1" = Table.ReplaceValue(#"Added Prefix","||","|",Replacer.ReplaceText,{"Merged"}),
#"Split Column by Delimiter1" = Table.SplitColumn(#"Replaced Value1", "Merged", Splitter.SplitTextByDelimiter("|", QuoteStyle.Csv), {"Merged.1", "Merged.2", "Merged.3", "Merged.4", "Merged.5", "Merged.6", "Merged.7", "Merged.8"}),
#"Removed Columns" = Table.RemoveColumns(#"Split Column by Delimiter1",{"Merged.1"}),
#"Removed Duplicates" = Table.Distinct(#"Removed Columns")
in
#"Removed Duplicates"