Hui’s Excel Report Printer

Share

Facebook
Twitter
LinkedIn

Over a decade ago I was working on a very large and complex budget model, come to think of it I still am?

It involved 4 linked Excel workbooks, about 30 worksheets, all different, and multiple views of each worksheet.

There were regular Worksheets and Chart Sheets interspersed throughout.

Some of the Ranges had Outlined/Grouped Totals that were indented on some reports, but not on others depending on whom the various reports were going to.

It was a great budget model until you had to print a copy of it.

And of course the different levels of Managers all want different reports etc, etc.

 

The Solution

To solve this I developed a simple VBA routine which has evolved over the years to what is presented here.

The basic idea is to add a Printing Control sheet to your workbook.

This sheet has a list of print views, not Excel views, of various pages within the current workbook.

Each page can be setup as you wish and allows for a number of common parameters for each printed page.

Pages can be listed, multiple times if required, with different ranges or outlining selected each time

The Code handles Worksheets and Chartsheets, Normal and Named Ranges, Page Orientation, Page Size, Page Grouping and Headers/Footers.

As a user you setup the sheets as a list in the order you want them, with appropriate parameters.

The code then:

  • Loops through the list,
  • Obtain the parameters,
  • Sets up the print page and
  • Prints it.

You just need to sit back and wait for the printer to jam.

HOW DO I USE IT

Download the sample file here Excel 97-03, Excel 2007/10

You can use the sample file as is, for demo purposes or read on later where I describe how to use this in your workbooks.

Open the workbook and Goto the “Print_Control” worksheet.

Browse through the various Headings in Row 4 and field values below them.

Note that some of the Row 4 cells have comments in which explain what options are available.

Each field is described below:

No.

The Row No. in the list of page layouts available.

This has no use except when someone says the 5th page should be…

Description/Header

A text field that is used as a Reminder of the layout of the Page Setup also serves as a Centred Header.

Status

Print = On

Don’t Print = Off

The code only prints the pages marked as On.

Sheet

The name of the Worksheet or Chartsheet you want to print

Area

The Range on the Sheet that you want printed

Ignored for Chartsheets.

Land/Port

Specify if the page should be printed Landscape or Portrait

Ignored for Chartsheets.

Chartsheets are printed in Landscape.

Pages Wide

How many pages wide should the Range be printed on

This is fixed at 1 for Chartsheets.

Pages Tall

How many pages tall should the Range be printed out on

This is fixed at 1 for Chartsheets.

Copies

How Many Copies do you want of that individual page.

Rows & Columns

If outline/grouping is used specify what level of Indentation should be used for the Rows and Columns.

0 – Leave as is

1 – Indent 1 level

8  – Indent 8 levels

The maximum indentation is 8

Ignored for Chartsheets.

Footer (Left)

A description field printed as lower left footer.

No. of Copies

This specifies the Number of Copies of the Whole Report you want

Print All “On” Areas

The Print All “On” Areas Button executes the code and prints out a number of copies of the report as specified in the various page setups.

The printing is done on the default printer on your PC,

Important: Ensure that the printer you want to use for the job is set as the default before you start Excel.

You can print to a PDF file by specifying your Adobe or other PDF Printer as the Default Printer.

I’m sorry, This doesn’t fix the printing multiple pages to multiple files when printing to PDF issue.

 

Warning ! I maybe old school but I still recommend saving before printing !

 

HELP

There is limited help built into the system, That’s what this Post is doing.

Some of the field headings have comments which show what values are acceptable in those fields.

HOW DO I ADD THIS TO MY WORKBOOK ?

To add this to your workbook, copy the Print_Control worksheet to your workbook

  1. Open your workbook.
  2. Open the Demo File
  3. Copy the Print_Control worksheet by Right Clicking on the Print_Control tab, and copy to your workbook.
  4. Run the VBA Code using the “Setup Print Control Named Formula” Button

That’s it.

All the code required for the printing is part of the Print_Control page.

 

HOW DOES THE VBA WORK ?

The following describes the VBA Code driving this worksheet.

To examine this goto VBA (Alt F11)

Select the workbook and double click on Sheet0 (Print_Control)

The code should appear in the right hand window

If you are unfamiliar with VBA it may be worth going through Chandoo’s Crash Course in VBA

There are 2 Subroutines and a Function in this system which are documented below

 

Print_Reports

This is the main subroutine that drives the printing

It is called by the Print All On Button and when finished returns the user to the Print_Control worksheet.

All the VBA code is in RED,

Comments and notes are in BLACK before the line or section they refer to.

= = = = = = = = = = = = = = = = = = =

At the start of the Print_Reports subroutine, setup variables for later use

Option Explicit

Public Sub Print_Reports()

Dim PrintArea As Variant

Dim i As Integer

Dim j As Integer

Dim sht As Long

Dim Orientation As String

Dim NCopies As Integer

Dim PWide As Integer

Dim PTall As Integer

Dim Footer As String

Dim Header As String

Dim Sheets As String

Dim gRow As Integer

Dim gCol As Integer

Dim PaperSize As String

Dim msg As String

Dim tmp As String

Turn off the Automatic Calculation so that it is faster and isn’t as jerky

Application.Calculation = xlCalculationManual

This loads the entire array of the Print_Control page into an array called PrintArea

PrintArea = Worksheets(“Print_Control”).Range(“Print_Control”).Value

This sets up a loop for the No of Total Copies of the Whole report

For j = 1 To [Copies].Value ‘Loop through the No of Copies

This sets up a loop for the to check each line of the Print Control area

For i = 1 To UBound(PrintArea, 1) ‘Loop through the print area

If the Column Status is On print using that line of settings

If UCase(PrintArea(i, 3)) = “ON” Then ‘When On is enabled Print using the settings

Extract the settings from the stored array, row i

Header = PrintArea(i, 2) ‘Set Header variable

Orientation = PrintArea(i, 6) ‘Set Orientation variable

PWide = PrintArea(i, 8 ) ‘Set Pages Wide variable

PTall = PrintArea(i, 9) ‘Set Pages Tall variable

NCopies = PrintArea(i, 10) ‘Set No Copies variable

gRow = PrintArea(i, 11) ‘Set Row Group Expansion

gCol = PrintArea(i, 12) ‘Set Column Group Expansion

Footer = PrintArea(i, 13) ‘Set Footer variable

Check paper sizes against the built in page sizes

If PrintArea(i, 7) = “A4” Then

PaperSize = 9

ElseIf PrintArea(i, 7) = “A3” Then

PaperSize = 8

ElseIf PrintArea(i, 7) = “A5” Then

PaperSize = 11

ElseIf PrintArea(i, 7) = “Legal” Then

PaperSize = 5

ElseIf PrintArea(i, 7) = “Letter” Then

PaperSize = 1

ElseIf PrintArea(i, 7) = “Quarto” Then

PaperSize = 15

ElseIf PrintArea(i, 7) = “Executive” Then

PaperSize = 7

ElseIf PrintArea(i, 7) = “B4” Then

PaperSize = 12

ElseIf PrintArea(i, 7) = “B5” Then

PaperSize = 13

ElseIf PrintArea(i, 7) = “10×14” Then

PaperSize = 16

ElseIf PrintArea(i, 7) = “11×17” Then

PaperSize = 17

ElseIf PrintArea(i, 7) = “Csheet” Then

PaperSize = 24

ElseIf PrintArea(i, 7) = “Dsheet” Then

PaperSize = 25

Else

PaperSize = 9 ‘Defaults to A4

End If

Activate the relevant sheet

This checks that the sheet exists first

tmp = PrintArea(i, 4)

SheetExists(tmp) is a UDF that’s checks if the sheet exists and returns True or False

If Not SheetExists(tmp) Then

msg = “Sheet ‘” + PrintArea(i, 4) + “‘ not found.” + vbCrLf + “Check the sheets Name.”

msg = msg + vbCrLf + vbCrLf + “Processing will continue for remaining sheets.”

tmp = MsgBox(msg, vbExclamation, “Sheet not Found”)

Else

The sheet exists now process

Select the sheet

Application.Sheets(PrintArea(i, 4)).Select

Check if it is a Worksheet or a Chartsheet

If ActiveSheet.Type = -4167 Then ‘Its a worksheet

Turn off screen updating

Application.ScreenUpdating = False

Select the relevnt area of the sheet

ActiveSheet.PageSetup.PrintArea = PrintArea(i, 5) ‘Select the relevent Print Area of the Sheet

Set Outline levels

ActiveSheet.Outline.ShowLevels RowLevels:=gRow, ColumnLevels:=gCol ‘Set Outline Grouping

Apply print settings

With ActiveSheet.PageSetup ‘Set print settings

.PrintTitleRows = “”

.PrintTitleColumns = “”

.LeftHeader = “”

.CenterHeader = Header ‘User Defined Header (Shift to Left or Right as required)

.RightHeader = “”

.LeftFooter = Footer ‘User Defined Footer (Shift to Left or Right as required)

.CenterFooter = “”

.RightFooter = “”

.LeftMargin = Application.InchesToPoints(0.1)

.RightMargin = Application.InchesToPoints(0.1)

.TopMargin = Application.InchesToPoints(1.0)

.BottomMargin = Application.InchesToPoints(0.4)

.HeaderMargin = Application.InchesToPoints(0.1)

.FooterMargin = Application.InchesToPoints(0.3)

.PrintHeadings = False

.PrintGridlines = False

.PrintComments = xlPrintNoComments

.CenterHorizontally = False

.CenterVertically = False

.Draft = False

.PaperSize = PaperSize ‘ User Defined Paper Size

.FirstPageNumber = xlAutomatic

.Order = xlDownThenOver

.BlackAndWhite = False

.Zoom = False

.FitToPagesWide = PWide ‘User Defined No Pages Wide

.FitToPagesTall = PTall ‘User Defined No Pages Tall

.PrintErrors = xlPrintErrorsDisplayed

End With

Apply page orientation settings

If Orientation = “L” Then ‘User Defined Page Orientation

ActiveSheet.PageSetup.Orientation = xlLandscape

Else

ActiveSheet.PageSetup.Orientation = xlPortrait

End If

Turn Screen updating back on

Application.ScreenUpdating = True

Finished setting up Worksheet goto the Printing area

Else ‘Its a Chart page

Turn Screen updating off

Application.ScreenUpdating = False

Apply print settings

With ActiveChart.PageSetup

.LeftHeader = “”

.CenterHeader = Header

.RightHeader = “”

.LeftFooter = Footer

.CenterFooter = “”

.RightFooter = “”

.LeftMargin = Application.InchesToPoints(0.1)

.RightMargin = Application.InchesToPoints(0.1)

.TopMargin = Application.InchesToPoints(1#)

.BottomMargin = Application.InchesToPoints(0.4)

.HeaderMargin = Application.InchesToPoints(0.1)

.FooterMargin = Application.InchesToPoints(0.3)

.ChartSize = xlScreenSize

.PrintQuality = 600Change to 300 for Excel 97-03

.CenterHorizontally = True

.CenterVertically = True

.Orientation = xlLandscape

.Draft = False

.OddAndEvenPagesHeaderFooter = False ‘Removed from 97/03 Ver

.DifferentFirstPageHeaderFooter = False ‘Removed from 97/03 Ver

.EvenPage.LeftHeader.Text = “” ‘Removed from 97/03 Ver

.EvenPage.CenterHeader.Text = “” ‘Removed from 97/03 Ver

.EvenPage.RightHeader.Text = “” ‘Removed from 97/03 Ver

.EvenPage.LeftFooter.Text = “” ‘Removed from 97/03 Ver

.EvenPage.CenterFooter.Text = “” ‘Removed from 97/03 Ver

.EvenPage.RightFooter.Text = “” ‘Removed from 97/03 Ver

.FirstPage.LeftHeader.Text = “” ‘Removed from 97/03 Ver

.FirstPage.CenterHeader.Text = “” ‘Removed from 97/03 Ver

.FirstPage.RightHeader.Text = “” ‘Removed from 97/03 Ver

.FirstPage.LeftFooter.Text = “” ‘Removed from 97/03 Ver

.FirstPage.CenterFooter.Text = “” ‘Removed from 97/03 Ver

.FirstPage.RightFooter.Text = “” ‘Removed from 97/03 Ver

.PaperSize = PaperSize

.FirstPageNumber = xlAutomatic

.BlackAndWhite = False

.Zoom = 100

End With

Turn Screen Updating back on

Application.ScreenUpdating = True

End If

Now Print the active sheet using user defined No. Copies

ActiveWindow.SelectedSheets.PrintOut Copies:=NCopies, Collate:=True

End If

End If

Next i

Next j

Clear PrintArea array, just in case

PrintArea = Null

Turn Auto Calculation back on

Application.Calculation = xlCalculationAutomatic

Go back to the Print Control sheet

Application.Sheets(“Print_Control”).Select

End Sub

= = = = = = = = = = = = = = = = = = =

The SheetExists Function

This is a Function that is used by the Print_Reports subroutine to check if a sheet exists.

= = = = = = = = = = = = = = = = = = =

Function SheetExists(SheetName As String) As Boolean

‘ This function Returns TRUE if the sheet exists in the active workbook

SheetExists = False ‘Set default value of SheetExists

On Error GoTo NoSuchSheet ‘Set error trapping such that if the sheet doesn’t exist it will exit

Check length of sheet name, if the sheet exists it will return a value, otherwise an error

If Len(Sheets(SheetName).Name) > 0 Then

The sheet exists so set SheetExists = True and exit

SheetExists = True

Exit Function

End If

NoSuchSheet:

The sheet doesn’t exists so use default SheetExists = False and exit

End Function

= = = = = = = = = = = = = = = = = = =

The Setup_Print_Control_Named_Formula Subroutine

This is a simple subroutine that sets up the 2 named formula for use the first time a sheet is used.

= = = = = = = = = = = = = = = = = = =

Sub Setup_Print_Control_Named_Formula()

Setup Named Formula “Print_Control” which is the table of settings

ActiveWorkbook.Names.Add Name:=”Print_Control”, RefersToR1C1:= _

“=OFFSET(Print_Control!R4C2,1,,COUNTA(Print_Control!R5C2:R24C2),COUNTA(Print_Control!R4))”

ActiveWorkbook.Names(“Print_Control”).Comment = _

“Used by the Print_Reports Subroutine”

Setup Named Formula “Copies” which is the No of Copies of the Whole Report

ActiveWorkbook.Names.Add Name:=”Copies”, RefersToR1C1:= _

“=Print_Control!R26C13”

ActiveWorkbook.Names(“Copies”).Comment = “Specifies the No. of Copies for the Print_Reports Subroutine”

End Sub

= = = = = = = = = = = = = = = = = = =

NAMED FORMULA

The code relies on two Named Formulas

Copies:

=Print_Control!$L$27

Print_Control:

=OFFSET(Print_Control!$B$4,1,,COUNTA(Print_Control!$B$5:$B$24),COUNTA(Print_Control!$4:$4))

Automatically adjusts the Print_Control Named Formula for the number of Page Setup lines and Fields to be processed

If you have queries about how any of the above code works, please let me know in the comments below:

 

WHAT DOES THE ARRAY “PrintArea” DO ?

The print area array stores the values of the Print_Control range in a 2 dimensional array which represents the Print_Control range.

This is done for a few reasons, but simply it is faster as it results in less reading of the worksheet

It also allows more flexibility in the subsequent processing as all the data is in one area.

 

DOWNLOADS

Download the sample file here Excel 97-03, Excel 2007/10

 

WHAT’S NEXT

There are a number of parameters used in the Print Setup area which are not used or not used in the 97/03 version.

The code above is easily extended to include these if you desire.

One day when I have a spare moment (Most likely in 2025!) I will add the option for automatic incremental Page Numbers.

 

CLOSING

This code has saved, my staff and I, hundreds and hundreds of hours over the past decade whilst printing complex Excel workbooks.

This functionality was also one of the more requested issues from our poll of 3 months ago We Want Your Ideas!

I hope you enjoy it as much as I have ?

 

Updates

I will be extending the functionality of this in the future and so if you have any suggestions, lets hear them in the comments below:

 

How have you tackled large print jobs ?

I look forward to your comments below:

 

Hui…

For a list of my other contributions at Chandoo.org please visit; Hui.

Facebook
Twitter
LinkedIn

Share this tip with your colleagues

Excel and Power BI tips - Chandoo.org Newsletter

Get FREE Excel + Power BI Tips

Simple, fun and useful emails, once per week.

Learn & be awesome.

Welcome to Chandoo.org

Thank you so much for visiting. My aim is to make you awesome in Excel & Power BI. I do this by sharing videos, tips, examples and downloads on this website. There are more than 1,000 pages with all things Excel, Power BI, Dashboards & VBA here. Go ahead and spend few minutes to be AWESOME.

Read my storyFREE Excel tips book

Overall I learned a lot and I thought you did a great job of explaining how to do things. This will definitely elevate my reporting in the future.
Rebekah S
Reporting Analyst
Excel formula list - 100+ examples and howto guide for you

From simple to complex, there is a formula for every occasion. Check out the list now.

Calendars, invoices, trackers and much more. All free, fun and fantastic.

Advanced Pivot Table tricks

Power Query, Data model, DAX, Filters, Slicers, Conditional formats and beautiful charts. It's all here.

Still on fence about Power BI? In this getting started guide, learn what is Power BI, how to get it and how to create your first report from scratch.

70 Responses to “10 Tips to Make Better and Boss-proof Excel Spreadsheets”

  1. Yogesh Gupta says:

    Proper print settings on each sheet helps your boss to print the reports quickly without hastling you after printing irrelevant stuff.

    It is highly relevant that you print your reports once before circulating it to your boss or other people.

    Knowing that what your boss actully look at in the entire report can be very usefull. You can build a good summary of what your boss wants and put that as separate tab in the form of dashbord report, so that your boss does not peep into rest of your work and start pocking you with irrelevant stuff.

    You can also put that Dashboard into the email summary and not trouble your boss to open your workbook. This is ultimate boss proof tip and I have been using this for long time now.

  2. Shuchi says:

    Thank you Chandoo. Great checklist to follow before delivering an excel spreadsheet to someone else. Some points you mention are seemingly so simple that we might overlook them - like selecting cell#A1, but they make a difference to the impression the spreadsheet creates at the recipient's end.

  3. Tom says:

    Dear Chandoo,
    Great tricks.

    One trick I use (more and more) is to hide the sheet tabs and to hide the formulabar via the 'tools' 'options' and the 'view'-tab.

    Another trick is to limiting the scrolling area to hide all columms (or rows) until the end of the sheet. Select the column, press CTRL+SHIFT+RIGHT, right-click on the column and hide (also possible via VBA).

    I was wondering though if 'boss-proof' is related to 'excel-stupid-proof'?
    Cheerio
    Tom

  4. Martin says:

    Absolutely agree with this post !!!

    on the past months, after reading this blog, PTS's and Debra's Contextures, one of the things I've beggining to do as a best practice is to create all my spreadsheets with 3 tabs: data, summary and control, and this last one generally xlveryhidden, and sometimes the data one hidden as well.

    And this restrictions are also being applied as best practice, and with a lot of benefits as you well mentioned. Furthermore, if combined with dynamic named ranges, formulae is more readable to users, and the WOW effect is often achieved when the question "How did you do that?" arises.....

    Keep on the good posts !!!

    Rgds,

    Martin

  5. Nilesh says:

    Is there a way to keep the data in a seperate file rather than the same excel. This way you could keep presentation and data separate. But not sure how you would link up the two excel files

    • Pieter says:

      Yes, there is a way but it is not prefered.
      I used this a coulple of times, (You need to code).

      mail me if you need assistance with some sort

    • T says:

      It entirely is possible. The problem comes though, when you share the spreadsheet.

      If the recipient doesn't have both files, or access to both, things break when the values try to refresh.

  6. bazlina says:

    ey, why is the boss a she??

  7. Karthik says:

    Chandoo, one more trick that we could use with the help of VBA, RT click on the View code of the particular sheet, in the properties table set the Visible status to 2-xlveryhidden, this ensures the sheet name does not show up even when the BOSS tries to unhide the sheet from the sheet >> unhide option. Dont forget to password protect the VBA (available under tools >> VBAProject properties.

  8. Eric Lind says:

    Very good tips, although I have to say Chandoo, that your cats probably need to be spayed or neutered if they behave like that. =)

  9. Good to see all these tips on a single "sheet", and giving the name *boss proof*, and Dilbert was a great welcome 😀

  10. Peter H says:

    The best way to "Boss Proof" (and "Self Proof"!!) a spreadsheet is to keep back ups. I use a macro that saves the last 3 significant versions of the spreadsheet all with a date stamp included in the file name.

  11. To quickly select cell A1 on all sheet, use CTRL-Page UP or CTRL-Page down to navigate between sheets and CTRL-Home to select cell A1 (if you have frozen pane, it will select the top left cell of the section below).

  12. Jorge Camoes says:

    Great list. And I follow every single item... I also use a consistent background color for input cells in every report/dashboard. And I use a little VBA to identify the user and change the report accordingly (selecting the right market, for example).

  13. Tim Buckingham says:

    Chandoo, Nice post. I like to use the hidden Paste Picture Link option. Keep the original report you want displayed on a hidden sheet and only show the boss the report picture. Also great to watch the confusion when boss trying to select cells is worth the effort!

  14. m-b says:

    I usually save as PDF if there's no interactivity in the report. That way nothing can go wrong 🙂

    • Janet says:

      PDFs work a dream for me too and saves the boss's EA from telling me all the time that she can't print my work!!

  15. Chandoo says:

    @All.. thanks a ton for sharing your ideas. I am thinking of writing a part 2 of this post explaining some of your ideas in detail.

    @Bazlina ... I will make sure the boss is a HE in the next post 🙂

  16. Hui... says:

    "10 Tips to Make Better and Boss-proof Excel Spreadsheets"...
    Unless of course your Boss reads PHD !

  17. Debra McLaren says:

    Great article with one glaring error.

    If (like me) the majority of your spreadsheet errors are *caused* by cats, adding more cats is just going to increase the problem.

  18. Chandoo says:

    @Hui you always have a boss, even if you are boss. If you dont have a boss, then may be a cat or even a dog.

    @Debra: hmm... Are you sure the cats are not after the mouse? Go learn some keyboard shortcuts.. now 😛

  19. Paul Grenier says:

    Great Web Site. I've done almost all the above in trying to build my application and it's taken me hours and hours reading my "dummies " book. Thank you for all this information.
    Is there a formula I can use that will automatically return to "A1" cell should an associate use the 10 page spreadsheet I have?
    Is there a way to set an expiration date on my workbook so that beynd that date no one will get beyond the cover page?

    • Russell Cooney says:

      Paul, in all my "user facing" workbooks (those that I distribute) I create a named range called "Home" on the worksheet(s) that are most likely to be used. Then I write a little VBA that selects the Home range whenever that worksheet is activated or on other triggers depending on the context of the sheet. This is more appropriate for the dashboard tabs or summary tabs my job requires.

      But I usually set this functionality up early on in the design process so I can take advantage of it as well. I will sometimes assign a keystroke to the GoHome macro.

  20. JimmyG says:

    I'm in the marketing department (aka the picture department) and have to say that the macros/Excel sheets from our controlling department are the worst! They come to me to sort out the mess!!

  21. Chandoo says:

    @Peter: You can try creating a table of contents and then place it on each and every sheet so that user can jump to anywhere from anywhere. Here is a tutorial to help you get started.

    Also, You can prevent users from accessing the workbook after a certain date using macros. But users can certainly by pass it by disallowing macros on that workbook.

    @Jimmy: Wow... (just kidding) Welcome 🙂

  22. Ryan says:

    I was recently given a spreadsheet to improve upon.
    One of the "boss-proof" actions that the previous author had used was to use data validation instead of protecting the sheet to ward off people changing formulas.
    After entering a formula or value into a cell, use data validation to only allow, in this spreadsheet, whole numbers between 9999999 to 99999999.
    It's a bit of a pain to actually correct stuff instead of just unprotecting a sheet, but for those that know how to unprotect a sheet, it's a definite way to keep them from fooling with formulas.

  23. Raja Srinivas says:

    Puchu,
    We would love to see "Print" in your links section.
    It helps us taking prints as neat as your posts 🙂

  24. Paul Grenier says:

    Chandoo,
    I've emailed you a couple of times looking for avenues I need to try to put my workbook on the Internet.
    I notice you use PremiumThemes for your Web Site...You must feel good about their service. Do you think PremiumThemes might be an option for me?
    Paul

  25. Anurag G says:

    Instead of :
    Now Right click and select “Hide” option.

    Shortcut can be used : Ctrl+0 (to hide)..

  26. danial says:

    sir i wanted to know,how to hide cells or tab without hiding rows and columns? PLZ TELL ME

  27. JunDR says:

    Hi Chandoo!

    Great tips! Im researching on an excel project now that you can create to "lighten" the size without sacrificing the data inside..
    We usually encounter problems with the data, excel file is shared, in a network folder.. and there are 11 people that enters their own productivity in each tab.. however, there comes a time (uncertain) where some of the data they enter either gets deleted or changes value.. could this be a file size problem? are there other ways to create this file that will decrease data inconsistencies?

    thanks!

  28. [...] Hide un-necessary rows to create clean looking workbooks (and 9 more tips) [...]

  29. [...] Presentation format: all spreadsheets, should be designed so that it is easy to follow the process flow and result. Almost every spreadsheet should be presentable and understandable to senior management without additional formatting or explanation. (tips: how to design boss-proof excel sheets) [...]

  30. [...] on Excel formatting here: How to make better excel sheets, Formatting [...]

  31. [...] on Excel formatting here: How to make better excel sheets, Formatting [...]

  32. [...] tips: Learn how to make better Excel sheets Spread some love,It makes you awesome! [...]

  33. Janet says:

    Save what you want the boss to see as a PDF.  Absolutely foolproof and no cats hurt in the process.

  34. malen says:

    I really enjoyed allot of the tips on here, especially the one on comments on cells. That will come in handy on allot of our projects. I would also like to share on on my little tricks. I am constantly working on several different reports with several different systems and in doing so I am constantly running in problems and my way out of them is simply calling <a href"http://www.reportingguru.com/"> Reporting Guru </a> and telling exactly what I'm going through and they can tell me exactly how to get out.

  35. The_Doctor says:

    One of the things I've found to boss proof my worksheets are a few simple VBA scripts to automatically protect the workbook/worksheets, and direct them to the "Quick Look" dashboard page, I hide all of the raw data sheets before saving.  The script looks like this:
    Private Sub Workbook_Open()

        Sheets("Summary").Protect Password:="password"
        Sheets("Labor Cost by Site").Protect Password:="password", AllowUsingPivotTables: =true
        Sheets("Labor Cost by month").Protect Password:="password"
        Sheets("Quick Look").Protect Password:="password"
        Sheets("Quick look").Activate
        ActiveWorkbook.Protect Password:="password", Structure:=True, Windows:=False
    End Sub

    I also have a pivot that contains labor cost data which cannot be refreshed while the worksheet is locked.

    Private Sub Worksheet_Activate()
        Sheets("labor cost by site").Unprotect Password = "password"
            Set pvttable = Worksheets("labor cost by site").Range("a1").PivotTable
                pvttable.RefreshTable
        Sheets("labor cost by site").Protect Password = "password", AllowUsingPivotTables:=True
    End Sub

  36. lol says:

    OPPAN GANGAM STYLE!
     

  37. Rahul thial says:

    Your post are always with something creative , thanks for sharing this information , your post are worth reading and implementing 🙂 great job

  38. apt says:

    Hi,

    I will try to learn every point slowly !

    Shokran Chandoo.

  39. SpreadSheetNinja says:

    Best boss Proofing of sheets is useing indirect(address 😛 this prevents most smartass bossess from doing any actual changes cus the formula will be long and hard to understand for any bystanders..

    Also putting the actual calculations on a different sheet can make a sheet bulletproof from bosses.. especialy if you put them in the Very hidden so when the boss learns how to unhide sheets he wont simply find them.

    One thing iv also learned is that most bosses is scared of macros that gives "virus" warnings before beeing run 😛 That include the default warning from Excel...

    Long formulas or work arounds is best way to go.

  40. Novice says:

    What's the best way to amalgamate two existing excel spreadsheets into one?

    Two teams use the same format spreadsheets with individual data split into calendar months and I want to make them one without manually entering the data.

  41. Isaac says:

    Changing the properties of the file to read-only . (While the file is closed, right click on the file and check the read-only box.)

    This allows my boss(es) to access the file -- even change it -- without being able to save their changes. If a boss likes his 'new' version, he can save it with a different file name.

    But now -- how to prevent the boss from deleting the file altogether? Or deleting the whole network?

    • pieter says:

      Hey man.
      Think you can go as easy as to make a shortcut that links to your read only document. Then the boss wont know of the root document. He can figure it out but lets face it. He is a boss and 70% if them wont know squat

  42. Matt says:

    Instead of "Hiding" rows & columns, I find "Grouping" works best as its very easy to quickly see if a worksheet has hidden rows/columns. Sometimes hiding a random row/column is not easily noticed and can create issues.

  43. samantha says:

    I have one xl sheet with different dates in many columns and one raw's. I want to send this data to another xl sheets for each date. if somebody can help me will be great.

  44. Mariateresa says:

    Hello, I have just found out that I made a mistake in my spreadsheet: I had a column of negative numbers, but one of them was positive (while it should have been negative). Is there a formula/system to avoid this?

    Thanks.

    Mariateresa

  45. Hi,

    Hiding any worksheet can be unhidden and messed around easily. I change the visibility in visual basic from -xlSheetVisible to -xlSheetVeryHidden. By this, even if you right click on sheets, you will be unable to find the hidden sheets.

    Cool? I think so...

  46. sandeep says:

    Very informative, Thanks

  47. Cedric says:

    Is there a way to lock cells in an already protected worksheet.
    (Thus the entire worksheet is protected, then the entire office can open it as read only but only a few users have the password to edit the file)
    I would like an additional password or prompt box so these few users don't accidentally change formulas.

  48. Itss such as you learn my thoughts! You appear too understand
    a lot abnout this, like you wrote thee e-book in it
    or something. I fel that you just could do with some percent to presseure the message house a little bit,
    but insatead off that, this iis wondeerful blog.
    An excellent read. I'll definitely be back.

  49. free movie says:

    It is in reality a nice and helpful piece of info.
    I am happy that you just shared this useful info with
    us. Please keep us up to date like this. Thank
    you for sharing.

  50. GraH says:

    I laughed out loud reading the 2nd solution about moving to marketing department and making ppts.
    I've been using "technical" sheets for a long time already and depending on the audience it is hidden or not. I'm currently in my NO VBA mindset, so the very hidden option is no longer. Using sheets names like: TechnicalCodes; ExplicitVariables;SetUp; HeavyCalc seem to work to my experience as they send along a message "Don' t you mess-up here, you fool!". A "Read This" section or sheet however does not work!
    Reading stuff on this site has helped me develop a good habit of using colors and themes to assist the end user in being well-behaved. In my book the best advise here, because it is about the user experience and not only about protection your own work.
    For dashboards I get rid of tabs and scroll bars. Besides 2 exceptions, I need to come across a manager who can turn them on again without my help.
    Seems that I forgot about protecting cells, sheets and workbooks altogether. Damn!

  51. Mark H says:

    Thanks for the informative article Chandoo, I've been struggling with Excel lately. It's a powerful tool, but hard to learn for me.

  52. Neeraj Singh says:

    Thanks Chandoo for sharing these excel sheet tips it helps me a lot to understand excel more.

  53. Bryan says:

    Nice roundup, Chandoo! Here's one more I thought would be relevant:

    For Excel 2013+, you can hide the ribbon, as shown in this animated gif: https://gridmaster.io/tips/hide-ribbon-excel-space

    This will simplify the interface, making it less likely for people to accidentally make changes. 🙂

  54. KUMAR says:

    THANK YOU SIR

  55. constantine la says:

    I'm better at Power BI thanks to you!

Leave a Reply