Looking up when data won’t play nice – few more alternatives

Share

Facebook
Twitter
LinkedIn

Recently, we discussed about the case of unwieldy data and how we lookup what we want using formulas like SUMIFS. Today, let us learn few more ways to solve the same problem.

First, a re-cap of the problem:

Here is a data-set:

2D Lookup problem - Example dataset

The problem – build a lookup formula

And the problem. Oh, simple. Write a lookup formula to find how many customer walk-ins we have on any given day.

In the previous article, we discussed how to use SUMIFS to solve this problem. There were several amazing & awesome solutions shared by our readers in the comments section too.

Suitable structure spawns simple solutions

Poorly structured is the 2nd biggest problem of analysts. The first one is not enough coffee. That is why there is a dictum in the data analytics world.

Structure is everything

So, we can easily solve our lookup problem, if our data were to magically re-arranged in 2 column fashion – Data & Value.

Transforming data to solve problem easily - Example

This transformation can be done in 2 ways:

Option #1: Transforming Data – Using Formulas

We can use data fetching formulas like OFFSET or INDEX to re-arrange data in 2 columns.

Assuming,

  • Our 2D data is in a named range data,
  • There are running numbers starting with 0 in the cell J5

We can use below formula to fetch first column:

=IFERROR(INDEX(data,2*(INT(J5/7))+1,MOD(J5,7)+1),"")

for the second column, below formula works:

=IFERROR(INDEX(data,2*(INT(J5/7)+1),MOD(J5,7)+1),"")

How does this formula work?

I will explain the formula for first column. Deciphering 2nd column formula is your homework.

Here is the formula again: =IFERROR(INDEX(data,2*(INT(J5/7))+1,MOD(J5,7)+1),"")

Before understanding the formula, let’s take a minute to examine the structure of  our raw data.

  • Odd rows contain dates
  • Even rows contain values
  • There are 7 columns in total
  • So to get the first date, we need to go to row 1 (first odd number), column 1
  • To get the first value, we need to go to row 2 (first even number), column 1
  • But to get 8th date, we need to go to row 3(2nd odd number), column 1
  • So on

Let’s go from inside out.

  • 2*(INT(J5/7))+1 portion: This gives row number (ie odd number). J5 refers to running number and its value is 0. So we get 2*(INT(0/7))+1 = 1
    • This will be 3 when J5 becomes J12 (ie 8th date)
  • MOD(J5,7)+1 portion: This gives column number. It will result in values 1 thru 7 in a cyclical fashion. Thanks to MOD.
  • INDEX(data, ..., ...) portion: Now that we have both row & column numbers, INDEX formula kicks in and gets the corresponding date.
  • IFERROR(INDEX(...),"") portion: This is to help in case we ran out of all dates & values in our INDEX formula. Read about IFERROR here.

Once you have the formulas for first date & value, simply drag them to get rest of the values.

Option #2: Transforming data – Using VBA

VBA Macros are perfect for scenarios like this. Usually transformation is something you need to do every-time you import data from external systems. So simply write a macro that can do this automatically.

Assuming our data is in the range data and the first cell of our extraction range is startHere, you can use below macro:


Sub rearrangeData()
    'takes the values in DATA named range and rearranges them
    'from the named cell startHere

    Dim cell As Range, i As Long, j As Long, evenRow As Boolean, firstRow As Long
    
    i = 0
    j = 0
    firstRow = Range("data").Cells(1).Row
    
    For Each cell In Range("data")
        evenRow = (cell.Row - firstRow + 1) Mod 2 = 0
        If evenRow Then
            Range("startHere").Offset(j, 1).Value = cell.Value
            j = j + 1
        Else
            Range("startHere").Offset(i, 0).Value = cell.Value
            i = i + 1
        End If        
    Next cell
End Sub

How does this macro work?
Before jumping in to the lines of code and demystifying the logic, Let’s understand what we need to do:

  1. For each cell of data,
    1. If it is in odd row, put the cell data in Date column at end
    2. Else, put the cell data in Value column at end
  2. Repeat

This is what our code is trying to do.

Let’s examine the For Each loop, as this is the most critical part of our macro.

  • For each cell in the range data
  • We check if we are in evenRow using simple arithmetic on row numbers
  • If we are in evenRow then
    • We put the cell value in row j (number of values so far), column 2
    • We increment j
  • Else
    • We put the cell value in row i (number of dates so far), column 1
    • We increment i
  • Close the IF condition
  • We check for next cell in the data range

Advantages of Transformation over SUMIFS approach

Both options for transforming data have few advantages:

  • They work with any type of data (unlike SUMIFS, which works only for numeric lookups and has few other issues)
  • Once data is restructured, you can do other types of analysis like creating pivot tables, adding extra calculated columns etc. easily.

Download Example Workbook

Click here to download example workbook that shows original SUMIFS solution, both options for transforming data & few other formulas. Play with it to learn more. Check out the code by pressing ALT+F11.

How would you transform data?

My favorite techniques for transforming data are – VBA, formulas, Power Query, pivot tables & SQL. Depending on the situation, time availability, where my data is, I choose one of these options to scrub my data.

What about you? How do you clean up / scrub data like this? Please share you thoughts & tips with us in comments.

Instructions for washing your dirty data

If your work involves scrubbing dirty data, check out below tutorials too:


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.

8 Responses to “Top 5 keyboard shortcuts for Excel Charts”

  1. Michael (Micky) Avidan says:

    As far as I remember (checked, again, 2 minutes ago) in my "Excel 2013" in order to select various chart elements I need to use the Arrow keys and not the TAB key.
    Practically, the TAB key does nothing (within a Chart).
    ----------------------------
    Michael (Micky) Avidan

    • Chandoo says:

      Thanks for pointing this out. This is how I remember it too, but when I was recording the video yesterday, only TAB key worked. MS must have changed the keys in Excel 2016. I have edited the post to include both keys.

      • Andy Pope says:

        The key navigation on charts is different in 2016.

        TAB cycles through a layer of objects (SHIFT+TAB cycles backwards)
        ENTER move down a layer
        ESC moves up a layer

        So on a column chart with title/legend/data labels if you select the plotarea the TAB will go through Title > Legend > Plotarea.
        ENTER at plotarea will then select Vertical axis. Tab will take you through
        Horizontal axis > gridlines > Series > Horizontal Axis.
        ENTER with series selected will then allow you to TAB through individual data points and data labels.
        If you ENTER on datalabels you can TAB through each data label.

  2. GraH says:

    ALT + F1 : to create default chart
    ALT+E S T = CTRL + ALT + V, T : I find that easier to remember

    I second what Michael already said about TAB and arrow keys. I can't help but think if this is related to the "," or ";" as separator. I prefer to use the chart tools - layout- drop down box, anyway.

  3. Mike W says:

    Got to be F11 for instant charting. Highlight your data , hit F11 and voila! ?

  4. Jon Peltier says:

    Ctrl+1 is the most important chart shortcut. In fact, it works for any Excel object: whatever is selected, Ctrl+1 opens the task pane or dialog to format that object.

    Somewhere along the line, maybe when Excel 2016 came out, the arrow keys stopped working to cycle through the elements of a chart. But what works is holding Ctrl while clicking the arrow keys. I haven't gotten used to the Tab and other keys, but as long as Ctrl+Arrow works, I'm good.

    And F4 used to be so helpful when formatting a lot of charts. But since Excel 2007 came out, it has been mostly useless. It used to remember a whole set of changes at once, so I get that the newer modeless dialogs make that impractical. But now it only seems to work with formatting of lines and borders, and maybe fills. I find myself writing a lot of VBA one-liners in the Immediate Window to handle these tedious formatting tasks.

  5. Shelia Hollis says:

    after clicking on a chart, is there a shortcut key to copy it?

  6. Thank you for the Alt E S T - tip. This is more than a time saver. Because of dynamic charts or de-activated external references to data when you make the charts, you often have empty charts that are otherwise impossible to format. So this shortcut helps adressing that. I will work with it more and see if there remain some obstacles.

Leave a Reply