In Excel, the standard column chart will display all columns with the same width at regular intervals. However, in some circumstances, it would be better for the width of each column to be different. For example, where each column represents different ranges of data. This same principle of column width also applies to histograms.
Excel does not have any settings to change the width of individual columns when using a column chart. However, it is possible to get creative with a stacked area chart and the correct data layout. With a bit of trickery, it is possible to create this chart:
To create a variable width column chart we will be using a stacked area chart. Normally, this chart type uses fixed intervals for the x-axis (the bottom axis). By changing the x-axis to display a data axis we can plot a point anywhere along the x-axis. It is even possible to plot points in the same place along the x-axis, which results in a vertical line. This provides us with the ability to create the illusion of columns.
The data labels in the chart above are also an illusion. They are created by a line chart which has been set to have no color.
The chart we will be creating in this example uses fictional data to show customer satisfaction for a product based on various age ranges. The main data is shown below,
This data will be used to create this chart.
Setting up the data
The first step is to set-up the data in the right way.
Our data starts at 18, but the chart axis starts from zero, therefore the values in Cells A13 – A57 (shown above) are the number of years above 18.
Each category has 4 main points. Using the 18-25 group as an illustration, the first point is zero (blank), the next point is the value 7.6. Both of these points happen at zero years over 18. The next two points happen at 7 years over 18 (i.e. 25 years), the 7.6 is repeated, then reduces to zero. The remainder of the points in Cells B17 – B24 are zero (blank). Each subsequent category follows a similar pattern, but has more or less zeros before or after the data.
Creating the variable width chart
This tutorial is based on Excel 2016. The chart can be created with other versions of Excel, however, whilst the options may be in a different place, the principles are the same.
Select the cells without the age range column (Cells B12 – F24 in our example).
From the Ribbon click Insert -> Charts -> See All Charts.
From the Insert Charts window click All Charts -> Area -> Stacked Area -> OK.
A new area chart will appear
Right-click on the X-axis and select Format Axis…
From the Format Axis window select Date axis.
Right-click on one of the chart series, click Select Data…
From the Select Data Source window click Edit from the Horizontal (Category) Axis Labels box.
Set the Ages column as the Axis Labels. Then click OK.
The chart will now start to take shape as a variable width column chart or histogram.
Formula Magic with Dynamic Arrays
Have you ever faced these spreadsheet scenarios?
- How can I use VLOOKUP to return all the matching items, not just the first?
- How can I sort my information using a formula, so I don’t have to keep clicking the sort button?
- How can I quickly create unique lists of items to use with my SUMIFS calculation?
- How can I stop copying down formulas every time my source data changes.
- How can I build a PivotTable-like report, but using formulas so I don’t have to click refresh ever again.
Well, I’m here to give you some good news. with dynamic arrays, all these can be achieved easily 🙂
Adding data labels to the variable width Chart
The chart above is OK. But it would look better if the data labels were directly above or below the columns. Once we have this, we can delete the unsightly numbering on the X-axis. Unfortunately adding labels requires changing the source data, there needs to be additional columns and rows.
Notice that there are now 3 rows for each value, a mid-point has been inserted into the middle of each age range. Create the chart in the same manner as above, also including the Label Height in the chart data source. The chart should look like this:
Right-click on the Label Height chart series and select Change Series Chart Type…
Change the chart type to a line chart – as there is only one line, the type of line chart does not matter too much.
Right-click on the line chart and select Add Data Labels…
Next, right click on the data labels and select Format Data Labels…
From the Format Data Labels window, set the Label Position to Above. If you are using Excel 2013 or later, click Value From Cells and select range containing the data labels (Cells H13 – H28 in our example).
For those using Excel 2010 and before, Value From Cells will not be an option. If so, double-click on each data label and type the label description manually. Delete any labels you do not wish to keep.
Right-click on the Line Chart and select Format Data Series…
Set the Line to No Line and the Marker Options to None.
Delete any unnecessary chart items, such as Chart Title, Legends etc, then apply any additional formatting you do want.
If you would prefer the data labels below, that’s possible too.
Get our FREE VBA eBook of the 30 most useful Excel VBA macros.
Automate Excel so that you can save time and stop doing the jobs a trained monkey could do.
By entering your email address you agree to receive emails from Excel Off The Grid. We’ll respect your privacy and you can unsubscribe at any time.
If you’ve found this post useful, or if you have a better approach, then please leave a comment below.
Do you need help adapting this to your needs?
I’m guessing the examples in this post didn’t exactly meet your situation. We all use Excel differently, so it’s impossible to write a post that will meet everybody’s needs. By taking the time to understand the techniques and principles in this post (and elsewhere on this site) you should be able to adapt it to your needs.
But, if you’re still struggling you should:
- Read other blogs, or watch YouTube videos on the same topic. You will benefit much more by discovering your own solutions.
- Ask the ‘Excel Ninja’ in your office. It’s amazing what things other people know.
- Ask a question in a forum like Mr Excel, or the Microsoft Answers Community. Remember, the people on these forums are generally giving their time for free. So take care to craft your question, make sure it’s clear and concise. List all the things you’ve tried, and provide screenshots, code segments and example workbooks.
- Use Excel Rescue, who are my consultancy partner. They help by providing solutions to smaller Excel problems.
Don’t go yet, there is plenty more to learn on Excel Off The Grid. Check out the latest posts: