Source vs. Use of Funds – 14 charting alternatives

Share

Facebook
Twitter
LinkedIn

Let’s say you manage a fund or charity. You get money from various places and you use that money for various reasons. How do you tell the story of source vs. uses of funds? In this post, let’s review 14 charting options.

Source vs. Use of funds – Sample Data for this problem

Let’s say you have 3 sources and 3 uses, as shown below. For all these charts, we will use the same data, but may add some simple calculations or change the layout to get the charts.

data-for-source-vs-uses

As I made quite a few alternatives, I broke them in to two kinds of charts.

  • Simple charts: These are easy to make, easy to read and scale well when you have lots of sources & uses.
  • Exotic charts: These are somewhat tricky but fun to make, look exotic and raise a few eyebrows in the meeting room.

Simple Charts for Source vs. Use of funds

#1 – Waterfall chart

Waterfall chart is perfect for this kind of data. Simply layout your data like below (you can use SUBTOTAL or SUM formulas to calculate intermediate totals), select everything and insert waterfall chart from Insert ribbon. Mark total columns “as total” and you are done.

#2 – Stacked column chart

Data for stacked column chart - source vs. use of funds

Set up your data in two columns as shown aside and create stacked column chart. Format to your taste. Simple and effective.

#3 Couple of Pies

Use the same data format as “stacked column chart” but instead make two pie charts. If you have just a few options for sources and uses, Pie charts work great.

#4 – Mirrored bar chart

As you can see, sources and uses are two sides of the same coin, so we can go with a mirror metaphor like above. To create this chart, you need data in the format shown below. Once you have the data, just select it and insert a stacked bar chart. Format as you see fit and the mirror is ready.

data format for mirrored stacked chart.

#5 – Dollar background – stacked chart

This is same is option #2, but with a fancy dollar bill for plot area background and gap width for columns set to 0. When you make the fill colors for series semi-transparent, you get this effect.

#6 – Touching stacked bars…

Again, same format of data as “stacked chart #2”, but we make a stacked bar chart and then set gap width to 0 to get this effect. This works very well and makes it easy to compare.

#7 – Donuts

While I am not a fan of donuts or pies, they work great when you have small set of data like this. Set up your data like #2 stacked chart and instead make donut chart. Format and you get this.

#8 – Half a pie each…

This works very well if source total = use total. Just set up your data like this and make a normal pie chart. Format sources and uses in two colors like above and draw a line in the middle. You get above chart.

#9 – Sunburst chart

This is essentially similar to donuts (option #7) but we need data in a different structure (see aside). Sunburst charts work very well even when you have lots of items in each category or even sub-categories. Keep in mind though, sunburst charts are new to Excel 2016, so if you have older versions, you can’t get these.

#10 – Treemap chart

Same as sunburst charts, treemaps are a new chart in Excel 2016. They can work well when you have many items or even sub-categories.

Exotic charts for Source vs. Use of funds

#11 – Hourglass chart

The idea is Sources flow to Uses. So we make an hour glass shape with regular bar chart (with invisible series on left to push the items to center).

To create this, set up your data like below.

Now, simply create a regular stacked bar chart. Select Gap series, make it invisible (fill color > none), format source and uses series. You are done.

#12 – Butterfly chart

Sources and Uses as wings of butterfly. This is really an area chart, with an invisible series at the bottom to create the effect of butterfly wings. To make this chart, set up your data like below:

data for butterfly chart

Now, Make an area chart. Move gap series to top (so it is really at the bottom when laid out), then make it invisible. See this GIF to understand how it all works to make the butterfly wings.

How to make butterfly chart - demo

#13 – Waterfall lines

Instead of waterfall bars, we make this with lines. Unfortunately, this step chart is the trickiest one to create as we use XY plot with error bars to get the steps. The technique has too many steps, so I am not explaining them here, but if you are curious, see this tutorial.

#14 – Cube chart

Here the idea is Sources and Uses are two faces of a cube. Again, this is actually an area chart, but invisible gap series at bottom and a top layer. To make this, set up your data like below (remember, the horizontal axis has to be dates, else you will not get Cube effect).

To be honest, I am not a fan of cube chart, as it is tricky to label things and won’t work for more items. But I wanted to give it a try.

Download all the 14 charts…

I made a simple workbook with all 14 examples. Click here to download the file and play with it to learn. May be try making something on your own and post that in the comments section?

What is your favorite chart?

My favs are #1 (waterfall), #12 (butterly chart) and #8 (half pies).

What about you? What is your favorite chart among all these? Post in comments. Also feel free to make your own and share them so we can all learn.

Like charts & visual story telling? Check out these amazing examples

If you are in to data analytics & visualizations, you are going to love Chandoo.org. We got tons of examples and tips. Start with these…

This post is inspired by a forum question from Yaswanth92.

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.

30 Responses to “Rescue oddly shaped data – Battle between Formulas, VBA and Power Query”

  1. MF says:

    Nice use of Power Query! Power Query is simply awesome! But somehow a lot of people are punishing themselves by not using it (not learning it).

    An imperfect 4th approach for consideration... no codes at all...
    Select myrange.
    Go to Special --> Blank
    Delete Cell --> Shift cell left
    90% done... now we just need to move the data of 2nd column to the bottom of 1st column
    Of course... Power Query is the best.
    Cheers,

  2. There is another way but it involves multiple steps:
    Copy the values in column E, move the cursor to F5, Paste Special with Skip Blanks, OK
    Copy the values in column D, move the cursor to F8, Paste Special with Skip Blanks, OK
    And so on.
    This works perfectly, albeit a little clumsily apart from the values in B17 and C16, which can be moved with simple copy and paste

  3. Robson says:

    Power Query Forever! I do not know how I survived for so long without knowing and using this tool, I can not recommend it to my colleagues, but by the way they prefer to suffer to learn.

    My congratulations here from Brazil.

  4. Haz says:

    I rolled my eyes when I saw that data

    Using decimal places is a nice trick to order data, thanks for that

    And tweaking the first formula a bit, you can use OFFSET instead of INDIRECT

    =OFFSET($A$1, MIN(IF(myrange, ROW(myrange)), ROWS(A$1:A1))-1, RIGHT(TEXT(MIN(IF(myrange, ROW(myrange) + COLUMN(myrange)*0.00001), ROWS(A$1:A1)), ".00000"), 5)-1)

    • Michael Connor says:

      Tried the above formula with the downloaded oddly shaped data file and I could not get it to work. I get #value without ctrl+shift+enter, and #ref with ctrl+shift+enter.

      • Haz says:

        Sorry, it was SMALL, not MIN.
        Add with CTRL+SHIFT+ENTER.

        • Michael Connor says:

          Thank you for your formula. Like the indirect formula I tested this one in older versions of EXCEL and it worked without ALTERATION in EXCEL 95. Very impressive.

  5. Bertie Hechter says:

    Too complicated

    Use =Sum to summarize all the sells to the left and Bobs Your Uncle

  6. Michael Connor says:

    I tested this formula in versions of Excel all the way back to Excel 95

    =IF(ISERROR(INDIRECT("R"&SUBSTITUTE(TEXT(SMALL(IF(MyRange"",ROW(MyRange)+COLUMN(MyRange)*0.00001),ROWS(A$1:A9)),"00000.00000"),".","C"),FALSE)),"",(INDIRECT("R"&SUBSTITUTE(TEXT(SMALL(IF(MyRange"",ROW(MyRange)+COLUMN(MyRange)*0.00001),ROWS(A$1:A9)),"00000.00000"),".","C"),FALSE)))

    So there are multiple ways of cleaning up messy data by formulas.

    • Chandoo says:

      Wow.. Excel 95. Who knew people still use that. But as you have shown, Excel has all these beautiful and powerful functions for 23 years. It has data sciency stuff before DS was even a thing.

      • Michael Connor says:

        I had a problem with pasting the formula in the original post.
        Formula should be: =IF(ISERROR(INDIRECT("R"&SUBSTITUTE(TEXT(SMALL(IF(myrange"",ROW(myrange)+COLUMN(myrange)*0.00001),ROWS(A$1:A1)),"00000.00000"),".","C"),FALSE)),"",(INDIRECT("R"&SUBSTITUTE(TEXT(SMALL(IF(myrange"",ROW(myrange)+COLUMN(myrange)*0.00001),ROWS(A$1:A1)),"00000.00000"),".","C"),FALSE)))

        EXCEL even in a 16 bit version, is a very robust and capable program.

  7. Michael Connor says:

    I don't like the VBA code. If you have a blank row in MyRange, the last entry in the range is doubled up in the paste.here range.

    • Chandoo says:

      Not really. The macro is writing one cell at a time from paste.here. You have to clean the range before, which I was too lazy to write. But a line like Range(range("paste.here"), range("paste.here").end(xldown)).clearcontents should do the trick.

      • Michael Connor says:

        Adding Range(range("paste.here"), range("paste.here").end(xldown)).clearcontents fixed the problem.

  8. A Rakesh Patro says:

    for step split column by delimiter i am not getting option of split into rows or columns. Can you help me in this

  9. Marc says:

    Thanks Chandoo for promoting Power Query.

    To simplify further, you can "Unpivot Columns" instead of right click on the newly created column and split it by comma in to rows in step 3 of Power Query.

  10. johan says:

    i used

    =LOOKUP(10000,B5:F5)

    and got the answers. I just plagiarized this formula somewhere and use it, maybe you can explain why it works.
    Regards

    • Chandoo says:

      @Johan... I am not sure if the formula works correctly. When I tested it with the sample data in this post, it showed #N/As in two cells. Essentially, it will only give first value in each row. So if a row has multiple values, then subsequent values are missed. LOOKUP() function goes thru a list and finds the first value that is less than or equal to the input - in this case 10000 in B5:F5.

  11. Ben says:

    I have the need to convert pdf's to excel on occasion and they often come out a mess like this. I have used:

    Cell G2 =COUNT(myrange)
    Cell G3 =IFERROR(IF(G2-1<1,"",G2-1),"") copied down to G100
    Cell H2 =IFERROR(LARGE(myrange,G2),"") copied down to H100

  12. Patrick says:

    Waouw...

    =IFERROR(INDIRECT("R" & SUBSTITUTE(TEXT(SMALL(IF(myrange "", ROW(myrange) + COLUMN(myrange)*0.00001),
    ROWS(A$1:A1)), "00000.00000"), ".", "C"), FALSE), "")

    but CTRL Shift Enter with {} before and after 🙂 😀

  13. Peter B says:

    Another possibility.
    This assumes that you have a row index 'k' to use in the SMALL function and a column index 'h' to identify the columns of 'myRange'.
    If you define 'coord' to refer to
    =k+h/10 [assuming h<10]
    then it will be possible to recover values later based upon location within 'myRange'. The formula 'nb' that identifies non-blanks by coordinates is given by
    = SMALL( IF(myRange"", coord), k )
    Finally, to unpick the pieces
    = INDEX( myRange, INT(nb), 10*MOD(nb, 1) )

  14. Peter B says:

    Whilst I am here and making trouble the PQ solution is also a tad over-complicated. All that is needed is to unpivot the entire table and remove the Attribute column.

    The advanced editor would show
    let
    Source = Excel.CurrentWorkbook(){[Name="myRange"]}[Content],
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(Source, {}, "Attribute", "Value"),
    #"Removed Columns" = Table.RemoveColumns(#"Unpivoted Columns",{"Attribute"})
    in
    #"Removed Columns"

  15. vivian.liu says:

    1.fill the blank cells with 0
    2.the requested column value=sum of those mess number column
    but this can be used in only one column has value

  16. Juan Carlos Barreto says:

    Chandoo

    And if we use the formula SEARCH (100000000, B5: F5)

    JC

  17. Daniel Dion says:

    Another approach with Power Query, it will still work if the number of columns changed:
    let
    Source = Excel.CurrentWorkbook(){[Name="myrange"]}[Content],
    #"Added Custom" = Table.AddColumn(Source, "List", each Record.ToList(_)),
    #"Removed Other Columns" = Table.SelectColumns(#"Added Custom",{"List"}),
    #"Expanded LIst" = Table.ExpandListColumn(#"Removed Other Columns", "List"),
    #"Filtered Rows" = Table.SelectRows(#"Expanded LIst", each ([List] null))
    in
    #"Filtered Rows"

  18. Bob says:

    Nowadays, you can just use TOCOL on Excel 2024, MS 365, and Web Excel. It has a parameter to ignore blanks/errors/both.

Leave a Reply