Excel.Tips.Net Welcome toExcel.Tips.Net

Helpful Links

Tips.Net Home
ExcelTips Home
Ask an Excel Question
Make a Comment

Tips.Net Store

ExcelTips FAQ
ExcelTips Premium

Learn Access Now
Free Printable Forms

Beauty Tips
Car Tips
Cleaning Tips
College Tips
Cooking Tips
Excel2007 Tips
ExcelTips
Family Tips
Gardening Tips
Health Tips
Home Tips
Legal Tips
Money Tips
Organizing Tips
Pest Tips
Pet Tips
Wedding Tips
Word2007 Tips
WordTips

Advertise on the
ExcelTips Site

Newest Tips

Recording a Macro

Adding a Little Animation to Your Life

Converting a Range of URLs to Hyperlinks

Making the Formula Bar Persistent

Engineering Calculations

Digital Signatures for Macros

Fixing the Decimal Point

 

Calculating TV Time

Summary: Excel does a great job handling times, automatically recognizing them and putting them into a format that you can use in various calculations. This is not the case with specialized times, such as those used in the TV industry, where frames must be taken into account. This tip describes different ways that you can work with TV times in Excel. (This tip works with Microsoft Excel 97, Excel 2000, Excel 2002, and Excel 2003.)

John works in the TV industry, where timing is done to a resolution finer than a second. Television video must take into account hours, minutes, seconds, and frames. (There are thirty frames per second.) John was wondering if there was a way to handle frames in Excel.

There is no way to handle frames as part of the native time values in Excel. There are, however, a couple of things you can do to work with frames. Perhaps the most obvious suggestion is to keep hours, minutes and seconds as a regular time value, and then put frames in a separate cell. The immediate drawback to this approach is that calculations for the "TV times" are not as easy as they would be if they were represented in a single value.

A way around this is to try to do your own calculations in a macro. Excel goes through an internal process of converting times to decimal values that can be worked with very easily. You could simulate this same conversion process, converting a time value (including frames) to a decimal value. The TV time, in the format 00:29:10:10, could be stored in a cell (where Excel will treat it as a string) and then converted to a value by the macro.

There is a problem here, of course: You cannot convert the time to a true decimal value between 0 and 1 like Excel does for times. The reason has to do with the limits on Excel's significant digits. To arrive at a value, you would divide the hours by 24, the minutes by 1440 (24 * 60), the seconds by 86400 (24 * 60 * 60) and the frames by 2592000 (24 * 60 * 60 * 30). When you start getting into values that small, it exceeds Excel's limits of maintaining everything to fifteen significant digits. Thus, you end up with unavoidable rounding errors on the frames value.

One solution to this problem is to not try to work with decimal values between 0 and 1, but instead work with integers. If you convert the string time into an integer value that represents the number of total frames in the time, then you can easily do math on the resulting value. The following macro will do the conversion of a string in the format already mentioned:

Function Time2Num(Raw) As Long
    Dim FirstColon As Integer
    Dim SecondColon As Integer
    Dim ThirdColon As Integer
    Dim NumHours As Integer
    Dim NumMinutes As Integer
    Dim NumSeconds As Integer
    Dim NumFrames As Integer
    Dim T2D As Long

    Application.Volatile

    FirstColon = InStr(Raw, ":")
    SecondColon = InStr(FirstColon + 1, Raw, ":")
    ThirdColon = InStr(SecondColon + 1, Raw, ":")

    NumHours = Val(Mid(Raw, 1, FirstColon - 1))
    NumMinutes = Val(Mid(Raw, FirstColon + 1, SecondColon - 1))
    NumSeconds = Val(Mid(Raw, SecondColon + 1, ThirdColon - 1))
    NumFrames = Val(Mid(Raw, ThirdColon + 1, Len(Raw)))

    T2D = CLng(NumHours)
    T2D = T2D * 60 + NumMinutes
    T2D = T2D * 60 + NumSeconds
    T2D = T2D * 30 + NumFrames

    Time2Num = T2D
End Function

To see how this works, if you have a string such as 37:15:42:06 in cell A4, and you use the formula =Time2Num(A4), the result is the value 4024266, which is the number of frames in 37 hours, 15 minutes, 42 second, and 6 frames. To convert such values back to an understandable time, you can use the following function:

Function Num2Time(Raw) As String
    Dim NumHours As Integer
    Dim NumMinutes As Integer
    Dim NumSeconds As Integer
    Dim NumFrames As Integer
    Dim RemainingTime As Long

    Application.Volatile

    NumHours = Raw \ (CLng(30 * 60) * 60)
    RemainingTime = Raw Mod (CLng(30 * 60) * 60)

    NumMinutes = RemainingTime \ (60 * 30)
    RemainingTime = RemainingTime Mod (60 * 30)

    NumSeconds = RemainingTime \ 30
    RemainingTime = RemainingTime Mod 30

    NumFrames = RemainingTime

    Num2Time = Format(NumHours, "00") & ":" & _
      Format(NumMinutes, "00") & ":" & _
      Format(NumSeconds, "00") & ":" & _
      Format(NumFrames, "00")
End Function

By combining the two functions, you can do some math with the times. For instance, suppose you had the time 00:29:10:10 in cell A4 and the time 00:16:12:23 in cell A5. If you put the following formula in a cell, you can find out the difference between the two times:

=Num2Time(Time2Num(A4)-Time2Num(A5))

The result is 00:12:57:17.

The examples presented here are rudimentary; they don't take into account any error handling or limit checking on the times used. You can either expand on the examples to fit your needs, or you can look to a third-party source. For instance, you can find an explanation (with a sample workbook) for NTSC and PAL times at the following URL:

http://www.kenstone.net/fcp_homepage/timecode_spreadsheet.html

ExcelTips is your source for cost-effective Microsoft Excel training. This tip (3100) applies to Microsoft Excel versions: 97 | 2000 | 2002 | 2003

More Power! For some people, the prospect of creating macros can be scary. Those who conquer their fears, however, find they become much more confident and productive once they learn how to make Excel do exactly what they want. ExcelTips: The Macros is an invaluable source for learning Excel macros. You are introduced to the topic in bite-sized chunks, pulled from past issues of ExcelTips. Learn at your own pace, exactly the way you want.
 
Check out ExcelTips: The Macros today!