We all know that bar charts can be used to display values spread across various categories or times. We also know that pie charts / donut charts can be used to display percentage breakup of various quantities in a sum total. How about mashing up both to create a Donut Bar chart?
“oh, donut what?!? It sounds like a brand new junk food from dunkin’ donuts”
Well, not really. It is a mash-up or combo chart using which you can display, for eg. sales over last few years along with percentage break-up of individual products. See below to understand.

In the above chart we have mixed a bar chart with a donut chart and sprinkled it generously with a scroll bar form control.
In this charting tutorial, we will learn how to cook a donut bar chart using Microsoft Excel. Scroll down the page to get the downloadable workbook to see this in action.
Recipe for making a donut bar chart
A good donut bar can be healthy while adding variety to your regular menu of charts. To make a neat looking donut bar chart, just follow the recipe.
Ingredients:
Sales data (finely chopped – year vs product level), one donut chart, one bar chart, one scroll bar form control and 5 minutes of spare time.
Step 1: Get your dough, err, data ready
As with any chart, we need the right data in right format to make a perfect donut bar chart.
I have arranged the data for our chart in the below format.

The last column shows the values as per scroll bar position. (more on this in the next steps)
Step 2: Insert a scroll bar control and link it to a cell
Go to developer ribbon tab and insert a scroll bar form control. (learn more about turning on developer toolbar in excel 2007)
Once you have the scroll bar, link it to a cell, say B18.
Also, set the scroll-bar minimum value as 1, maximum value as the number of years you have (in our case it is 14) and incremental change to 1.
Step 3: Determine product-wise breakups and totals based on scroll bar selection
We can use INDEX() excel formula to do this.
What is INDEX excel formula?
INDEX formula (examples) returns a specific value from a range of cells by taking the row and column of that range as input. For eg. =INDEX(A1:C10,2,1) will return the value in 2nd row, 1st column, ie, the value in cell A2.
So, how to write the INDEX formula in our case?
That is your home work. Just use the kitchen sink to experiment.
Once you are done, the product-wise breakups should be listed in a tabular format like this.

Step 4: Put everything together and boil for a minute
We have done all the ground work required to make the donut bar chart. Now, We just need to put everything together and make some charts. Here we have 4 small steps.

- Insert a donut chart using the product-wise breakup data
- Insert a bar chart with the yearly totals
- Insert another series in the bar chart to show the selected year total. Completely overlap this series with the totals series.
- Position everything together.
Finally adjust formatting and colors as per your taste.
That is all, the donut bar is ready for consumption. Serve hot or chilled. The donut bar tastes great with a cup of coffee.
Download the donut bar chart excel work book and play with it
Click here to download the donut bar chart template & workbook. Change the values and chart attributes to understand how this works.
Also try a Bar Pie chart, just follow the same recipe, but replace donut with pie.
Please tell me how your donut bar tasted using comments. 🙂
Recommended charting tutorials for you:














12 Responses to “Analyzing Search Keywords using Excel : Array Formulas in Real Life”
Very interesting Chandoo, as always. Personally I find endless uses for formulae such as {=sum(if(B$2:B$5=$A2,$C$2$C$5))}, just the flexibility in absolute and relative relative referencing and multiple conditions gives it the edge over dsum and others methods.
I've added to my blog a piece on SQL in VBA that I think might be of interest to you http://aviatormonkey.wordpress.com/2009/02/10/lesson-one-sql-in-vba/ . It's a bit techie, but I think you might like it.
Keep up the good work, aviatormonkey
Hi Chandoo,
You might find this coded solution I posted on a forum interesting.
http://www.excelforum.com/excel-programming/680810-create-tag-cloud-in-vba-possible.html
[...] under certain circumstances. One of the tips involved arranging search keywords in excel using Array Forumlas. Basically, if you need to know how frequent a word or group of keywords appear, you can use this [...]
@Aviatormonkey: Thanks for sharing the url. I found it a bit technical.. but very interesting.
@Andy: Looks like Jarad, the person who emailed me this problem has posted the same in excelforum too. Very good solution btw...
Realy great article
"You can take this basic model and extend it to include parameters like number of searches each key phrase has, how long the users stay on the site etc. to enhance the way tag cloud is generated and colored."
How would you go about doing this? I think it would need some VB
Hi,
I found the usage very interesting, but is giving me hard time because the LENs formula that use ranges are not considering the full range, in other words, the LEN formula is only bringing results from the respective "line" cell.
Using the example, when I place the formula to calculate the frequency for "windows" brings me only 1 result, not 11 as displayed in the example. It seems that the LEN formula using ranges is considering the respective line within the range, not the full range.
Any hint?
@Thiago
You have to enter the formula as an Array Formula
Enter the Formula and press Ctrl+Shift+Enter
Not just Enter
Thank you, Hui! I couldn't work out how this didn't work
is there a limit to the number of lines it can analyse.
Ie i am trying to get this to work on a list of sentances 1500 long.
@Gary
In Excel 2010/2013 Excel is only limited by available memory,
So just give it a go
As always try on a copy of the file first if you have any doubts
Apologies if I am missing something, but coudn't getting frequency be easier with Countif formula. Something like this - COUNTIF(Range with text,"*"&_cell with keyword_&"*")
Apologies if I missed, but what is the Array Formula to:
1. Analyze a list of URL's or a list of word phrases to understand frequency;
2. List in a nearby column from most used words to least used words;
3. Next to the list of words the count of occurrences.