Show Months & Years in Charts without Cluttering

Share

Facebook
Twitter
LinkedIn

We make charts with date axis all the time. For example, lets say you want to plot the number of donuts consumed per month in a chart, like this:

Date Axis with Months & Years - An example excel chart

2 things become quite obvious when you look at this chart,

  • The year -09 and -10 repeating across bottom of axis is pure chart junk.
  • Aww, dude. How many donuts do you eat!?!

Now, there is nothing much I can do about donut consumption. But I can tell you how to fix that axis so it looks a lot better, may be like this:

Date Axis with Grouped Months & Years - An Excel Chart Example

Interested? Follow this simple recipe:

  1. Process your data: Assuming your data looks like what I shown to left, just use simple formulas to make it look like the table to right. [related: how to work with dates & times in excel]Date Axis with Months & Years - Sample Data
  2. Now, make a chart from the data. Use both year and month columns for axis label series.
  3. That is all. Excel shows nicely grouped axis labels on your chart.

Pretty simple, eh?

Download the Excel Chart Template

Click here to download excel chart template & workbook showing this technique. Play with the formulas & chart formatting to learn.

2 Bonus Tips:

1. This technique really works with just any types of data.

So you can just have Product Group & Product Name in 2 columns and when you make a chart, excel groups the labels in axis.

2. Further reduce clutter by unchecking Multi Level Category Labels option

You can make the chart even more crispier by removing lines separating month names. To do this select the axis, press CTRL + 1 (opens format dialog). From Axis options, un-check Multi Level Category Labels option.

Grouped Axis Examples - Excel Charts

How do you format date axis on charts?

Most of the times when I make charts with date axis, the axis has 12 or 13 months of data. So I knock off the year part completely. But in some cases, I end up making charts that show data from multiple years. Now, repeating year value across bottom is a waste of chart ink. So I tend to use the above technique to make the chart look much more professional.

What about you? How do you format date axis? Please share your ideas and experiences using comments.

More Charting Formatting Tips:

http://chandoo.org/wp/2010/04/08/smart-chart-legends/
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.

6 Responses to “Make VBA String Comparisons Case In-sensitive [Quick Tip]”

  1. Rick Rothstein (MVP - Excel) says:

    Another way to test if Target.Value equal a string constant without regard to letter casing is to use the StrCmp function...

    If StrComp("yes", Target.Value, vbTextCompare) = 0 Then
    ' Do something
    End If

    • Fares Al-Dhabbi says:

      That's a cool way to compare. i just converted my values to strings and used the above code to compare. worked nicely

      Thanks!

  2. Tim says:

    In case that option just needs to be used for a single comparison, you could use

    If InStr(1, "yes", Target.Value, vbTextCompare) Then
    'do something
    End If

    as well.

  3. Luke M says:

    Nice tip, thanks! I never even thought to think there might be an easier way.

  4. Cyril Z. says:

    Regarding Chronology of VB in general, the Option Compare pragma appears at the very beginning of VB, way before classes and objects arrive (with VB6 - around 2000).

    Today StrComp() and InStr() function offers a more local way to compare, fully object, thus more consistent with object programming (even if VB is still interpreted).

    My only question here is : "what if you want to binary compare locally with re-entering functions or concurrency (with events) ?". This will lead to a real nightmare and probably a big nasty mess to debug.

    By the way, congrats for you Millions/month visits 🙂

  5. Bhavik says:

    This is nice article.
    I used these examples to help my understanding. Even Instr is similar to Find but it can be case sensitive and also case insensitive.
    Hope the examples below help.

    Public Sub CaseSensitive2()

    If InStr(1, "Look in this string", "look", vbBinaryCompare) = 0 Then
    MsgBox "woops, no match"
    Else
    MsgBox "at least one match"
    End If

    End Sub

    Public Sub CaseSensitive()

    If InStr("Look in this string", "look") = 0 Then
    MsgBox "woops, no match"
    Else
    MsgBox "at least one match"
    End If

    End Sub
    Public Sub NotCaseSensitive()
    'doing alot of case insensitive searching and whatnot, you can put Option Compare Text
    If InStr(1, "Look in this string", "look", vbTextCompare) = 0 Then
    MsgBox "woops, no match"
    Else
    MsgBox "at least one match"
    End If

    End Sub

Leave a Reply