Formula Forensic No 019. Converting uneven Text Strings to Time

Share

Facebook
Twitter
LinkedIn

Last week over at the Chandoo.org Forums, Birko asked a question about How to Import some Numbers as Times.

I have imported some data that comes in as a number that I need to convert to h:mm. The data string will be either 1,3,4,5,6 integers long and looks like this…eg

Imported         Need to equal this
Number           h:mm
0                      0:00
100                  0:01
1000                0:10
10900              1:09
235900            23:59

Can someone please provide a smart formula to convert this (assume data is in cell A1).

Today in Formula Forensics we will look at how this problem was solved, and the solution which may surprise you.

Importing Numbers as Times.

When I first saw this data I start by looking at patterns.

Working backwards through the list

I can see that 235900 is 23 Hrs, 59 Min and 0 second

I can see that 10900 is 1 Hr, 9 Min and 0 second

I can see that 1000 is 0 Hrs, 10 Min and 0 second

I can see that 100 is 0 Hr, 1 Min and 0 second

I can see that 0 is 0 Hr, 0 Min and 0 second

I then start to think about how to extract the Hours, Minutes and seconds independently from the Text using a series of Left, Right and Mid functions, and quickly realised that due to the varying lengths of the strings, That they will end up being complex formulas as I will need to allow for each string length.

What if I pad the strings with leading 0’s and then extract them.

That is possible, but as a single formula it will be long and cumbersome as the padding has to occur a number of times for each Hour, Minute and Second as part of the Time() function.

So padding may work but is cumbersome, then a bright light moment

What about I use the Text function to do the padding.

And I quickly posted the following formula:

=(LEFT(TEXT(A1,"000000"),2)/24)+(MID(TEXT(A1,"000000"),3,2)/1440)+(RIGHT(TEXT(A1,"000000"),2)/(24*3600))

As Time is just a number between 0 = midnight and 0.999999 = 11:59:59 pm, I can extract the Hours, Minutes and seconds separately and then simply add them together to get the actual time

I Can use the Text function to display the Strings in a consistent format that allows me to use the Left, Mid and Right functions to retrieve the Hours minutes and Seconds from the appropriate places.

Lets work through this formula section by section and see what is going on.

Hours

The Hours component of the formula is

=(LEFT(TEXT(A1,"000000"),2)/24)+(MID(TEXT(A1,"000000"),3,2)/1440)+(RIGHT(TEXT(A1,"000000"),2)/(24*3600))

=(LEFT(TEXT(A1,"000000"),2)/24)

Working from the middle out, this formula takes the value in A1 and displays it as a Number with the format “000000”

So using our data

235900 will convert to 235900

10900 will convert to 010900

1000 will convert to 001000

We can now use a Left() function to extract the hours from the first 2 characters of the converted string

Using our examples:

Left(235900,2) = 23

Left(010900,2) = 01

Left(001000,2) = 00

To convert hours to a Time we simply divide by 24

Minutes

The Minutes component of the formula is

=(LEFT(TEXT(A1,"000000"),2)/24)+(MID(TEXT(A1,"000000"),3,2)/1440)+(RIGHT(TEXT(A1,"000000"),2)/(24*3600))

=MID(TEXT(A1,"000000"),3,2)/1440

Once again, Working from the middle out, this formula takes the value in A1 and displays it as a Number with the format “000000”

So using our data

235900 will convert to 235900

10900 will convert to 010900

1000 will convert to 001000

We can now use a Mid() function to extract the minutes from the middle 2 characters of the converted string

Mid(235900,3,2) = 59

Mid(010900,2) = 09

Mid(001000,2) = 10

To convert Minutes to a Time we simply divide by 1440 (1440 is how many minutes are in a day = 24 * 60)

 

Seconds

The Seconds component of the formula is

=(LEFT(TEXT(A1,"000000"),2)/24)+(MID(TEXT(A1,"000000"),3,2)/1440)+(RIGHT(TEXT(A1,"000000"),2)/(24*3600))
=RIGHT(TEXT(A1,"000000"),2)/(24*3600))

Once again, Working from the middle out, this formula takes the value in A1 and displays it as a Number with the format “000000”

So using our data

235900 will convert to 235900

10900 will convert to 010900

1000 will convert to 001000

We can now use a Right() function to extract the minutes from the middle 2 characters of the converted string

Right(235900,3,2) = 00

Right(010900,2) = 00

Right(001000,2) = 00

To convert Seconds to a Time we simply divide by 86400 (86,400 is how many seconds are in a day = 24 * 60 * 60)

Total Time

To get the total Time we simply add the Hour, Minutes and Seconds together

=(LEFT(TEXT(A1,"000000"),2)/24)+(MID(TEXT(A1,"000000"),3,2)/1440)+(RIGHT(TEXT(A1,"000000"),2)/(24*3600))

 

Download

You can download a copy of the above file and follow along, Download Here.

 

Formula Forensics “The Series”

You can learn more about how to pull Excel Formulas apart in the following posts

Formula Forensic Series

 

Formula Forensics Needs Your Help

I urgently need more ideas for future Formula Forensics posts and so I need your help.

If you have a neat formula that you would like to share and explain, try putting pen to paper and draft up a Post like above or;

If you have a formula that you would like explained but don’t want to write a post also send it to Chandoo or Hui.

 

 

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 “A quick personal update”

  1. David Noble says:

    Thank you for the personal update. It was quite encouraging and a breath of fresh air in my Inbox. Take care and stay safe.
    David

  2. Doctors advise:
    Virus obstructs lungs with thick mucus that solidifies.
    Consume lot hot liquids like tea, soup, and sip of hot liquid every 20 min
    Gargle w antiseptic of lemon, vinegar, & hot water daily
    It attaches to hair/clothes detergent kills it, when come from st go straight shower
    Hang dirty clothes in sunlight/cold overnight or wash immediately.
    Wash metal surfaces as it can live on them 9 days
    Do not touch hand rails
    Do not smoke
    Wash hands foaming 20 sec every 20 min
    Eat fruit/veg and up zinc levels.
    Animals do not spread it
    Avoid common flu
    Avoid eat/drink cold things
    If feel sore throat do above immediate as virus is there 3-4 days before descends into lungs
    Would love help with my database mgt in excel.

  3. Karanbir says:

    Thanks for being thoughtful of us.
    BTW How do you track your expenses/income in excel? Can you share the worksheet please.
    Stay safe you and your family, best wishes.

  4. Surya says:

    Thanks for the update and happy to know that you and family are doing good. A 21 day lockdown has now been announced in India (I live around Kolkata) so it's uncertain times ahead. I check up on your wonderful articles often and will do so even more regularly now. Stay safe and God bless.

  5. Pablo says:

    Hi from Argentina, I follow you for a lot of years now. We here are in a quarantine for 2 or 3 weeks, because the pandemia.
    Excel is also my passion and I came here looking for a Num2Words formula, but in spanish. If anyone have it, please let me know.
    Best regards.

    Pablo Molina
    La Rioja - Argentina

  6. Indrajit Kar says:

    I'm glad to have your personal update. I'm from India & following you for so many years. Cheers to have any further personal update.

Leave a Reply