Recipe for a Donut Bar Chart

Share

Facebook
Twitter
LinkedIn

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.

Use Donut Bar Charts to Display Product-wise Breakups in Sales

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.

Data and Format for Donut Bar Chart

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

Scrollbar settings for Donut Bar ChartGo 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.

Scrollbar settings for Donut Bar Chart

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.

steps for making donut bar chart

  1. Insert a donut chart using the product-wise breakup data
  2. Insert a bar chart with the yearly totals
  3. Insert another series in the bar chart to show the selected year total. Completely overlap this series with the totals series.
  4. 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:

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.

26 Responses to “Get busy this weekend, with OR XOR AND [Excel Homework]”

  1. Stef@n says:

    first solution for AND
    The two numbers are in A1 and B1
    = SUBSTITUTE (SUBSTITUTE (A1+B1*9*9, 9, 1), 8, 0)
    regards
    Stef@n

  2. Stef@n says:

    next solution for OR
    =1*SUBSTITUTE (A1+A2;2;1)

    regards
    Stef@n

  3. Stef@n says:

    last solution for XOR
    =1*SUBSTITUTE (A1+A2;2;0)

    regards
    Stef@n

  4. Irvine says:

    Or you could make use of the VBA logical operators!

    Define the following as custom functions
    Public Function BITXOR(x As Long, y As Long)
    BITXOR = x Xor y
    End Function

    Public Function BITAND(x As Long, y As Long)
    BITAND = x And y
    End Function

    Public Function BITOR(x As Long, y As Long)
    BITOR = x Or y
    End Function

    and then use them such:
    A B =BITOR(A,B) =BITAND(A,B) =BITXOR(A,B)
    0101 0100 0101 0100 0001

  5. Stef@n says:

    an another solution for AND
    =1*SUBSTITUTE (SUBSTITUTE (A1+A2;1;0);2;1)

    note:
    the binary numbers are in A1 and A2 !
    regards
    Stef@n

  6. Shair says:

    I was obviously playing hooky at the beach during the bit-wise math lesson – you lost me at “Understanding bit-wise operations” 🙂

  7. Anup Agarwal says:

    After looking at the above solutions, I find my solution silly, but still:

    For the following formulae,
    Row 1: headers,
    Row 2: OR
    Row 3: AND
    Row 4: XOR

    Column 1: Input 1
    Column 2: Input 2
    Column 3: Result

    OR
    {=SUM(IF(MID(A2,ROW(OFFSET($A$1,0,0,LEN(A2),1)),1)+MID(B2,ROW(OFFSET($A$1,0,0,LEN(B2),1)),1)>0,1,0)*10^(LEN(A2)-ROW(OFFSET($A$1,0,0,LEN(B2),1))))}

    AND
    {=SUM(IF(MID(A3,ROW(OFFSET($A$1,0,0,LEN(A3),1)),1)+MID(B3,ROW(OFFSET($A$1,0,0,LEN(B3),1)),1)=2,1,0)*10^(LEN(A3)-ROW(OFFSET($A$1,0,0,LEN(B3),1))))}

    XOR
    {=SUM(IF(MID(A4,ROW(OFFSET($A$1,0,0,LEN(A4),1)),1)+MID(B4,ROW(OFFSET($A$1,0,0,LEN(B4),1)),1)=1,1,0)*10^(LEN(A4)-ROW(OFFSET($A$1,0,0,LEN(B4),1))))}

  8. Hui... says:

    @Anup
    Please don't consider your solution silly
    Firstly, You are the 3rd person to submit an answer
    Secondly, The best formula/function is the one that you know and understand.

  9. Michael Azer says:

    I think I have a very tedious solution, which people won't have the patience to do except in small numbers.

    I used the same problem setup as "Anup Agarwal"

    AND =IF(AND(MID(B2,1,1)="1",MID(C2,1,1)="1"),1,0)&IF(AND(MID(B2,2,1)="1",MID(C2,2,1)="1"),1,0)&IF(AND(MID(B2,3,1)="1",MID(C2,3,1)="1"),1,0)&IF(AND(MID(B2,4,1)="1",MID(C2,4,1)="1"),1,0)

    OR =IF(OR(MID(B3,1,1)="1",MID(C3,1,1)="1"),1,0)&IF(OR(MID(B3,2,1)="1",MID(C3,2,1)="1"),1,0)&IF(OR(MID(B3,3,1)="1",MID(C3,3,1)="1"),1,0)&IF(OR(MID(B3,4,1)="1",MID(C3,4,1)="1"),1,0)

    =IF(OR(AND(MID(B4,1,1)="1",MID(C4,1,1)="0"),AND(MID(B4,1,1)="0",MID(C4,1,1)="1")),1,0)&IF(OR(AND(MID(B4,2,1)="1",MID(C4,2,1)="0"),AND(MID(B4,2,1)="0",MID(C4,2,1)="1")),1,0)&IF(OR(AND(MID(B4,3,1)="1",MID(C4,3,1)="0"),AND(MID(B4,3,1)="0",MID(C4,3,1)="1")),1,0)&IF(OR(AND(MID(B4,4,1)="1",MID(C4,4,1)="0"),AND(MID(B4,4,1)="0",MID(C4,4,1)="1")),1,0)

  10. Michael Azer says:

    Sorry my last post was totally messed up

    AND
    =IF(AND(MID(B2,1,1)="1",MID(C2,1,1)="1"),1,0)&IF(AND(MID(B2,2,1)="1",MID(C2,2,1)="1"),1,0)&IF(AND(MID(B2,3,1)="1",MID(C2,3,1)="1"),1,0)&IF(AND(MID(B2,4,1)="1",MID(C2,4,1)="1"),1,0)
    OR
    =IF(OR(MID(B3,1,1)="1",MID(C3,1,1)="1"),1,0)&IF(OR(MID(B3,2,1)="1",MID(C3,2,1)="1"),1,0)&IF(OR(MID(B3,3,1)="1",MID(C3,3,1)="1"),1,0)&IF(OR(MID(B3,4,1)="1",MID(C3,4,1)="1"),1,0)
    XOR
    =IF(OR(AND(MID(B4,1,1)="1",MID(C4,1,1)="0"),AND(MID(B4,1,1)="0",MID(C4,1,1)="1")),1,0)&IF(OR(AND(MID(B4,2,1)="1",MID(C4,2,1)="0"),AND(MID(B4,2,1)="0",MID(C4,2,1)="1")),1,0)&IF(OR(AND(MID(B4,3,1)="1",MID(C4,3,1)="0"),AND(MID(B4,3,1)="0",MID(C4,3,1)="1")),1,0)&IF(OR(AND(MID(B4,4,1)="1",MID(C4,4,1)="0"),AND(MID(B4,4,1)="0",MID(C4,4,1)="1")),1,0)

  11. Stephen says:

    @stefan,
    I just couldn't get your solutions to work.
    01010101010 + 01010101110 = 02020210120
    what am i doing wrong?

  12. Stephen says:

    @anup
    ...I got yours to work!

  13. Rich says:

    @Stephen - I get the same, but Stef@an's second solution for AND does work (at least for the test cases I used)

  14. Stef@n says:

    @ Stephen / Rich
    yes , you are right ! - only this works:

    OR
    =1*SUBSTITUTE (A1+A2;2;1)
    XOR
    =1*SUBSTITUTE (A1+A2;2;0)
    AND
    =1*SUBSTITUTE (SUBSTITUTE (A1+A2;1;0);2;1)

  15. Michael Azer says:

    @Stef@n - You're answer is really smart, I never knew about the substitute function before. Great Work!

  16. Stef@n says:

    Thx Michael 🙂
    yes - it is simply easy 😉
    if you add 1 and 1 - excel calculate 2
    and then you have to substitute the 2 - new = 0 respectively 1

  17. Rob says:

    Here is a good resource for people wanting to learn binary and hexadecimal.
    http://justwebware.com/bitwise/bitwise.html

  18. Kyle McGhee says:

    Three that weren't asked for:
    NOT
    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1+A2,0,3),1,0),3,1)

    EQV
    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1+A2,0,3),2,3),1,0),3,1)

    IMP
    =SUBSTITUTE(SUBSTITUTE(A1+SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,0,3),1,0),3,1),0,1),2,0)

    (was using Daniel Ferry's bitwise file to verify against)

  19. Q says:

    @ Kyle

    Not only takes one parameter and inverts 0 -1 and 1-0

    Took out the +A2
    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,0,3),1,0),3,1)

  20. Great solutions!

    I'll add two:

    NAND =1*SUBSTITUTE (A1+A2,2,0)

    NOR=1*SUBSTITUTE(SUBSTITUTE (SUBSTITUTE(A1+A2,0,2),1,0),2,1)

  21. John Fuller says:

    This will work for binary numbers of any size (although the text format mask will have to have as many zeroes as there are digits in the longest addend)

    Assume binary #s are in C35 & C36, then add and format as text in C37:
    =TEXT(C36+C35,"000000000000")
    -sum- = 101112211112

    AND - SUBSTITUTE 0s for 1s in -sum-, then sub 1s for 2s
    =SUBSTITUTE(SUBSTITUTE(C37,"1","0"),"2","1")

    OR - sub 1s for 2s in -sum-
    =SUBSTITUTE(C37,"2","1")

    XOR - sub 0s for 2s in -sum-
    =SUBSTITUTE(C37,"2","0")

  22. Shane says:

    Just wandered by:

    AND:

    =SUBSTITUTE(A1+A2,1,0)/2

  23. Ronald Vonk says:

    Hi Chandoo,

    I am not (yet) really into bitwise calculation, but I am looking for a way to speed up my vba calculation with very big numbers. Would is ben convenient to use bitwise notation for this?

    Best regards,

    Ronald (the Netherlands)
    p.s. love your country!

Leave a Reply