Bullet graphs were developed by data visualisation expert Stephen Few to address the need for visually rich displays of data in small spaces which are typical of a dashboard report.
They enable you to compare your actual measure to a target/budget and also a qualitative range as denoted by the background fill.
While Excel is an ideal tool for creating dynamic and interactive dashboards it unfortunately lacks a built-in bullet chart. Although you can coerce a combination of Excel’s built in charts to create a bullet chart look-a-like, it’s an onerous task.
A simple alternative is to apply Conditional Formatting to a 3 row x 20 column grid of cells like so:
You might call it an in-cell(s) bullet chart! I agree it takes up a bit of spreadsheet real estate but at > 1M available rows (since Excel 2007) I think we can afford it.
Enter your email address below to download the sample workbook.
Conditional Formatting Bullet Graphs - 3 Step Guide:
Step 1: Format your columns
Decide how many columns (or rows for a vertical bullet chart) you want to use and set the width/height – I’ve used a 3 row x 20 column grid set to 1.43 wide.
We will be scaling our actual values down to fit into the number of columns available therefore the number of columns/rows you choose will depend on the level of accuracy required.
Since I have used 20 columns I can only be accurate to 1/20. If you require more granular accuracy simply use more columns – even 100 if you want. You can make them super skinny so they don’t make the graph any bigger while allowing for accuracy to 1/100.
Number each of your columns as shown below in row 3 (these numbers are used in step 3 for your Conditional Formatting - you can hide this row later, likewise the gridlines):
Step 2: Get your data ready
Set out a table for your graph source data. Mine is horizontally laid out (see below) but you can set it out vertically if you prefer.
- In row 6 enter your qualitative scale upper limits, and your Target/Budget and Actual figures.
- In row 7 scale your values to the number of columns/rows available for your graph using this formula in cell C7: =ROUND(C6/$E$6*20,0) – copy across cells D7:G7.
Note: I’ve multiplied the ‘Good’ value in my scale (cell E6) by 20 as is the number of columns I’m using for my graph - change this value to match the number of columns/rows you use.
Step 3: Insert your Conditional Formatting Rules
There are 5 Conditional Formatting rules for each graph and they all use a simple logical test formula which compares the ‘Scaled Values’ in row 7 to the ‘Scale Workings’ in row 3:
To set up your Conditional Formats first select all the cells where your Bullet Graph will be inserted > go to the Home Tab > Conditional formatting > New Rule > from the ‘Select a Rule Type’ list choose ‘Use a formula to determine which cells to format’:
Enter your formula in the Rule Description field and set your format. Take particular care to set your absolute and relative references correctly. For more detailed instructions on setting up Conditional Formatting using formulas, including when to use absolute or relative references, see here.
- Formula 1 =$F$7=K$3 applies the Target marker which is simply a right border.
- Formula 2 =$G$7>=K$3 applies a black fill for the Actual bar – note this is only applied to the middle row (row 6), whereas the other formats are applied to all 3 rows. Select the cells in the middle row before creating this conditional format.
- Formula 3 =$C$7>=K$3 applies the dark gray fill for the ‘Bad’ qualitative band.
- Formula 4 =$D$7>=K$3 applies the mid gray fill for the ‘Satisfactory’ qualitative band.
- Formula 5 =$E$7>=K$3 applies the light gray fill for the ‘Good’ qualitative band.
Note: the order of your formulas is somewhat important as this sets the precedence; for example, formula # 2 must be above the qualitative rules in the Rules Manager list otherwise it will be overridden by the other rules.
Vertical Bullet Graphs
While vertical bullet graphs are more easily achieved with the built in column charts, you can also create them using this Conditional Formatting technique by simply switching the layout from columns to rows:
Formatting Tips
- The graph title, scale and tick marks are simply entered in adjacent rows/columns. Merging cells or applying ‘Center across selection’ will allow you to align the scale values to the tick marks which are cell borders.
- Copy and paste a Linked Picture of your bullet graphs into your dashboard so that you don’t have to fuss about with column widths in your actual dashboard worksheet. You can then resize the linked picture easily using the pull handles (as seen below).
For Excel 2007 use the Camera Tool, or in Excel 2010 onwards use Copy and Paste Special > Linked Picture.
- You can easily add another marker to your graph, for example you might want to have a ‘Prior Year Actual’ marker. Simply add another value in your source data and apply another conditional format for it in a different colour.
- You can change the colours of the qualitative bands etc. but don’t go silly with it. Stephen Few makes some good points here on how too much colour can make your dashboard appear cluttered and visually overwhelming.
Thanks
I'd like to thank Peter Urbani for this technique. Peter originally shared the examples below with me which I thought were very clever.
I simply made a few cosmetic modifications like changing the target marker to a cell border so that it is a solid line instead of dashes.
Chart Based Bullet Graphs
If you prefer to build bullet graphs using the Excel charting engine, then check out this technique from Clearly and Simply.
Excel Dashboards
If you'd like to learn more about building dashboards using Excel then take a few moments to check out my Excel Dashboard course here.
Jef
A great article and some excellent methods. Easy to implement. Thanks for sharing.
Mynda Treacy
Hi Jef,
Thanks. I liked this technique for its simplicity compared to the alternative. Although both have their downsides.
Mynda
MF
I prefer doing so by a Scatter Plot. ;p
Mynda Treacy
Hi MF,
The scatter plot and bar chart mix is the method I teach in my dashboard course. I also like this as a simpler alternative .
Cheers,
Mynda
MF
icic. 🙂