Its what happens when you have to write a lot of vlookup formulas before you can start analyzing your data. Every day, millions of analysts and managers enter VLOOKUP hell and suffer. They connect table 1 with table 2 so that all the data needed for making that pivot report is on one place. If you are one of those, then you are going to love Excel’s data model & relationships feature.
In simple words, this feature helps you connect one set of data with another set of data so that you can create combined pivot reports.
Practical Example – V(X)LOOKUP hell vs. Data Model heaven
Lets say you are looking sales data for your company. You have transaction data like below.
And you want to find out how many units you are selling by product category and customer’s gender.
Unfortunately, you only have product ID & customer ID.
With VLOOKUP Hell,
You first fetch all the customer and product data and place them in separate ranges.
Then write a vlookup formula to fetch product category, another to fetch customer gender.
Then fill down the formulas for entire list of transactions.
Now make a pivot table.
Assuming you have 30,000 transactions, you have to write 60,000 VLOOKUP formulas to create this one report!!!
With Data Model heaven,
Create relationships between Sales, Products & Customer tables
Create a pivot table
Creating a relationship in Excel – Step by Step tutorial
First set up your data as tables. To create a table, select any cell in range and press CTRL+T. Specify a name for your table from design tab. Read introduction to Excel tables to understand more.
Now, go to data ribbon & click on relationships button.
Click New to create a new relationship.
Select Source table & column name. Map it to target table & column name. It does not matter which order you use here. Excel is smart enough to adjust the relationship.
Add more relationships as needed.
Using relationships in Pivot reports & analysis
Select any table and insert a pivot table (Insert > Pivot table, more on Pivot tables).
Make sure you check the “Add this data to data model” check box.
In your pivot table field list, check “ALL” instead of “ACTIVE” to see all table names.
Select fields from various tables to create a combined pivot report or pivot chart
Example: Category & Gender Sales Report
Add category to row labels
Add gender to column labels
Add quantity to values
and your report is ready!
Things to keep in mind when you using relationships
Same data types in both columns: Columns that you are connecting in both tables should have same data type (ie both numbers or dates or text etc.)
One to one or One to many relationships only: Excel 2013 supports only one to many or one to one relationships. That means one of the tables must have no duplicate values on the column you are linking to. (for example products table should not have duplicate product IDs).
You can add slicers too: You can slice these pivot tables on any field you want (just like normal pivot tables). For example, you can further slice the above report on customer’s profession or product’s SKU size.
Benefits of Data Model based Pivot Tables
Once you have a data model in spreadsheet, you will enjoy several benefits (apart from multi-table pivots that is). They are,
Distinct counts: This simple but often tricky to calculate number is easy to get once you have data model based pivot. Just go to value field settings and change the summary type to “Distinct count”. Here is a tip explaining how to get distinct counts in Excel pivots.
Measures & DAX: Once you have a Data Model, you can unleash the full Power Pivot features on your workbook. You can create measures (using DAX language) and calculate things that are otherwise impossible with regular Excel. Here is an example of percentage of something calculation with DAX & Data Model, to get started.
Pivots from data in other files & databases: You can combine data model with the abilities of Power Query to create pivots from data in other places. For example, you can make a pivot from sales data in SAP with customer data in CRM system. Here is an overview of what is Power Query?
Convert Pivot Tables to formulas: Once you have a data model based pivot table, you can turn it in to a set of formulas. You can access this feature from “Analyze” ribbon. This will replace your pivot with a bunch of CUBE formulas. Here is an overview of CUBE formulas.
Drawbacks of Data Model:
Of course, its not all cup cakes and coffee with Data Model. There are a few drawbacks of data model based pivot tables.
Compatibility: Data model & relationship feature is available only in Excel 2013 or above. This means, you cannot create or share such pivot reports with people using older versions of Excel.
Not able to group data: In regular Pivot Tables, you can group numeric, data or text fields. But with data model pivot tables, you can no longer group data. You must create another table with the group mapping and use it as a relationship.
Ever since discovering PowerPivot, I kind of stopped using VLOOKUP (or XLOOKUP) for most of my own analysis. Now that relationships are part of main Excel functionality, I am using them even more.
What about you? Are you using relationships & data model in Excel? What cool things are you doing with it? Share your tips with us using comments.
Want even more? Try PowerPivot
If you want even more out of your reports, then try PowerPivot. It is a new feature in Excel 2013 (available as add-in in Excel 2010) that can let you do lots of powerful analysis on massive amounts of data. Here is an introduction to PowerPivot.
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 story • FREE Excel tips book
Let’s try something different. I will share a data analytics challenge here. Post your solutions in the comments. Our first challenge involves Employee Data Analysis.
I was going to point out the same thing, except to note that useing the time function and doing the divide method are not interchangeable.
I have spent hours investigating a spreadsheet working with a couple of years worth of hourly data, and found that the reason things weren't working is because the rounding on the divide method is only close to the correct time values. In order to have it work for comparisons, (like sub-totaling by time value, or pivoting) you MUST use the TIME function.
Great use of the TEXT function, Hui. I will be using this concept for sure.
I tried to use your formula. But, it doesn't seem to work for me. I am getting an error message "The formula you typed contains an error". It seems I have the problem in using \: in the format. How can I overcome this?
Manick, it isn't the /: that causes the problem. If you copy/paste it, you're getting “'s instead of the actual quotation marks that Excel uses. Change the quotation marks by deleting from the pasted formula and retype them.
@Elias: I had no problem using your formula, in fact, I have used your method to convert a number such as 20120419 to an Excel date using =TEXT(A1,"0000\/00\/00")*1. Thanks for posting.
Sweet! It appears this also works with =TEXT(A1,"0-00-00")*1. I come from the old days when you counted every byte. I also like to try an make formulas as small as possible for the fun of it 🙂
Hi Master,
While writing the formulae you have considered only upto "seconds factor" . I think you should take the centi-seconds factor also to achieve best results. Please look into it and rectify the problem...?
For Example.
In horse racing timings are noted in minute, seconds and centi-seconds, like if a horse finished in 70 seconds over a scurry of 1200 metres, is noted as 1.10 min. Nowadays it is noted in centi-seconds everywhere, like 70.00 if you want to convert it to centi seconds (should multiply by 100) = 7000 centi seconds. If you put this figure into your formula as a general number (7000) it will return as 1:10:00. As per your formula, it should be taken as 1 hour 10 seconds 0 minutes. However for a racing enthusiast like me it can be taken as 1 minute 10 seconds also.
Just look what happens if we race goers use this figure as 7000 centi seconds in your formulae, it will correctly show as 1 minute 10 seconds(?) Suppose a horse finishing over a 1200m in 70.60 seconds or in racing terms written as 1.10.60 mins, where 1 minute 10 seconds, & 60 centi-seconds can be counted as 7060, if you put this figure in the formula it will return as 1 minute 11 seconds, that is correct.
My point is if you can incorporate Centi Seconds in the formulae, it would be of great help to us also.
I need to convert a string of numbers representing average minutes, to reflect correct time values. For example, the numbers below currently represent 5.79 minutes, 15.82 minutes, etc.
I need to convert these values to their correct corresponding value within time parameters. So 5.79 would be something close to 5 minutes and 45 seconds.
5.79
15.82
3.92
12.40
6.70
3.62
I know there has to be a way to compute this in Excel, it can do anything, I believe!
22 Responses to “Formula Forensic No 019. Converting uneven Text Strings to Time”
Why not let the TIME function take care of the math:
=TIME(LEFT(TEXT(A1,"000000"),2),MID(TEXT(A1,"000000"),3,2),RIGHT(TEXT(A1,"000000"),2))
I was going to point out the same thing, except to note that useing the time function and doing the divide method are not interchangeable.
I have spent hours investigating a spreadsheet working with a couple of years worth of hourly data, and found that the reason things weren't working is because the rounding on the divide method is only close to the correct time values. In order to have it work for comparisons, (like sub-totaling by time value, or pivoting) you MUST use the TIME function.
Great use of the TEXT function, Hui. I will be using this concept for sure.
Why not just.
=TEXT(A1,"00\:00\:00")*1
Regards
Elegant!
Hi Elias,
I tried to use your formula. But, it doesn't seem to work for me. I am getting an error message "The formula you typed contains an error". It seems I have the problem in using \: in the format. How can I overcome this?
Thanks
Manick, it isn't the /: that causes the problem. If you copy/paste it, you're getting “'s instead of the actual quotation marks that Excel uses. Change the quotation marks by deleting from the pasted formula and retype them.
Hi Manick...
use this alternate formula :
=1*TEXT(A1,"00"":""00"":""00")
note twice double quote each side of :
@Manick,
Did you copy the formula and pasted in Excel or did you typed? Also, do you use , or ; as separator of arguments?
Regards
@Elias: I had no problem using your formula, in fact, I have used your method to convert a number such as 20120419 to an Excel date using =TEXT(A1,"0000\/00\/00")*1. Thanks for posting.
@Joe: For date convertion you can use this as well.
=TEXT(A1,"00-00-00")*1
Regards
Sweet! It appears this also works with =TEXT(A1,"0-00-00")*1. I come from the old days when you counted every byte. I also like to try an make formulas as small as possible for the fun of it 🙂
Elias's suggestion is the simplest, but here is yet another way with TIME and MOD functions...
=TIME(MOD(A2/10000,100),MOD(A2/100,100),MOD(A2,100))
Since the seconds appear to always be 0, why not simply the input to minutes and above and save yourself the trouble of typing those zeroes...
0 => 0:00
1 => 1:00
10 => 10:00
100 => 1:00:00
etc.
Then just use this formula...
=TEXT(A1,"0\:00\:")*1
@ Rick, the numbers to convert are no typed, they are imported. Then your formula will return the wrong result.
Regards.
Hmm! My formula lost some backslash-zero combinations (two of them to be exact). The formula was supposed to be this...
=TEXT(A1,"0\:00\:\zero\zero")*1
where the words "zero" should actually be the number 0. Another way to write the formula is this...
=TEXT(A1,"0\:00\:""00""")*1
Hi Master,
While writing the formulae you have considered only upto "seconds factor" . I think you should take the centi-seconds factor also to achieve best results. Please look into it and rectify the problem...?
For Example.
In horse racing timings are noted in minute, seconds and centi-seconds, like if a horse finished in 70 seconds over a scurry of 1200 metres, is noted as 1.10 min. Nowadays it is noted in centi-seconds everywhere, like 70.00 if you want to convert it to centi seconds (should multiply by 100) = 7000 centi seconds. If you put this figure into your formula as a general number (7000) it will return as 1:10:00. As per your formula, it should be taken as 1 hour 10 seconds 0 minutes. However for a racing enthusiast like me it can be taken as 1 minute 10 seconds also.
Just look what happens if we race goers use this figure as 7000 centi seconds in your formulae, it will correctly show as 1 minute 10 seconds(?) Suppose a horse finishing over a 1200m in 70.60 seconds or in racing terms written as 1.10.60 mins, where 1 minute 10 seconds, & 60 centi-seconds can be counted as 7060, if you put this figure in the formula it will return as 1 minute 11 seconds, that is correct.
My point is if you can incorporate Centi Seconds in the formulae, it would be of great help to us also.
Thanks and regards.
Rajagopal (Mumbai)
Awesome techniques !
I tried with 235960 just to see if it will fail but this is great.
Although a little longer, this too work:
=CHOOSE(LEN(A2);A2/(24*3600);A2/(24*3600);LEFT(A2;1)/(24*60) + RIGHT(A2;2)/(24*3600);LEFT(A2;2)/(24*60) + RIGHT(A2;2)/(24*3600);LEFT(A2;1)/24 + MID(A2;2;2)/(24*60) + RIGHT(A2;2)/(24*3600);LEFT(A2;2)/24 + MID(A2;3;2)/(24*60) + RIGHT(A2;2)/(24*3600))
Converting uneven Text Strings to Time I have imported some data that comes in as a number that I need to convert to h:mm.
Just come across this while googling
find interesting challenge and come up with this
=TEXT(TEXT(SUBSTITUTE(A1,RIGHT(A1,1),""),"000000"),"00\:00\:00")
I need to convert a string of numbers representing average minutes, to reflect correct time values. For example, the numbers below currently represent 5.79 minutes, 15.82 minutes, etc.
I need to convert these values to their correct corresponding value within time parameters. So 5.79 would be something close to 5 minutes and 45 seconds.
5.79
15.82
3.92
12.40
6.70
3.62
I know there has to be a way to compute this in Excel, it can do anything, I believe!
Thank you for any and all assistance~
@Renee... You can use a formula like this. Assuming A1 has the minutes.seconds,
=INT(A1) + MOD(A1, 1)*0.6
If you want to see it in 5 minutes 45 seconds format, use
=INT(A1) & " mins " & ROUND(MOD(A1, 1)*0.6,2) & " secs"