Please Note: This article is written for users of the following Microsoft Excel versions: 2007, 2010, 2013, 2016, 2019, 2021, 2024, and Excel in Microsoft 365. If you are using an earlier version (Excel 2003 or earlier), this tip may not work for you. For a version of this tip written specifically for earlier versions of Excel, click here: Calculating TV Time.

Calculating TV Time

Written by Allen Wyatt (last updated March 14, 2026)
This tip applies to Excel 2007, 2010, 2013, 2016, 2019, 2021, 2024, and Excel in Microsoft 365


1

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. (John uses 30 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. (In the television industry a time value that includes frames is often referred to as "timecode" or "time code.") 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, assuming you are working at 30 frames per second). 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 FrameRate As Integer
    Dim T2D As Long

    ' Change the following to the number of frames
    ' per second with which you are working
    FrameRate = 30

    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 * FrameRate + 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 FrameRate As Integer
    Dim RemainingTime As Long

    ' Change the following to the number of frames
    ' per second with which you are working
    FrameRate = 30

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

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

    NumSeconds = RemainingTime \ FrameRate
    RemainingTime = RemainingTime Mod FrameRate

    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. Plus, if you want to do a deep dive into frame rates in North America, you'll quickly find out that there are frame rates used not just for TV, but for film. You may have to deal with frame rates of 23.976, 24, 29.97, 30, 59.94, and 60. You can even deal with higher frame rates of 120, 180, and 240.

If you need exactitude in your calculations, you'll need to take your exact frame rate into consideration in the above macros. You can either expand on the examples to fit your needs, or you can look to a third-party source. The best approach is to use your favorite search engine and look for "timecode excel" or "time code excel" (without the quotes). You'll find plenty of examples of code you can start with.

Note:

If you would like to know how to use the macros described on this page (or on any other page on the ExcelTips sites), I've prepared a special page that includes helpful information. Click here to open that special page in a new browser tab.

ExcelTips is your source for cost-effective Microsoft Excel training. This tip (8353) applies to Microsoft Excel 2007, 2010, 2013, 2016, 2019, 2021, 2024, and Excel in Microsoft 365. You can find a version of this tip for the older menu interface of Excel here: Calculating TV Time.

Author Bio

Allen Wyatt

With more than 50 non-fiction books and numerous magazine articles to his credit, Allen Wyatt is an internationally recognized author. He is president of Sharon Parq Associates, a computer and publishing services company. ...

MORE FROM ALLEN

Selecting a Language

Need to format a paragraph (or some selected text) so that it is a language other than English? You can do so easily by ...

Discover More

Counting Times within a Range

Excel allows you to easily store dates and times in your worksheets. If you have a range of cells that contain times and ...

Discover More

Centering a Paragraph with the Keyboard

Need a quick shortcut that you can use to center your paragraph between the margins? The answer is here.

Discover More

Professional Development Guidance! Four world-class developers offer start-to-finish guidance for building powerful, robust, and secure applications with Excel. The authors show how to consistently make the right design decisions and make the most of Excel's powerful features. Check out Professional Excel Development today!

More ExcelTips (ribbon)

Taking the Time into Account in a Formula

Need to check the current time in a formula you are putting together? It can sometimes be tricky to remember what Excel ...

Discover More

Entering or Importing Times without Colons

Enter a time into a cell and you normally include a colon between the hours and minutes. If you want to skip that pesky ...

Discover More

Calculating an Average Time

When working with elapsed times, you may want to calculate an average of those times. This tip demonstrates just how easy ...

Discover More
Subscribe

FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."

View most recent newsletter.

Comments

If you would like to add an image to your comment (not an avatar, but an image to help in making the point of your comment), include the characters [{fig}] (all 7 characters, in the sequence shown) in your comment text. You’ll be prompted to upload your image when you submit the comment. Maximum image size is 6Mpixels. Images larger than 600px wide or 1000px tall will be reduced. Up to three images may be included in a comment. All images are subject to review. Commenting privileges may be curtailed if inappropriate images are posted.

What is six minus 4?

2026-03-15 13:53:18

jamies

1 -

If you want accuracy as in having a True from (10*(1/10+2/10)-3)=0
Avoid starting wit float, or allowing Excel to convert to any part of the calculation to float

Maybe it's worth creating a UDF in Excel
with the VBA using "Decimal Data Type"
that not just allows, but supports up to 29 significant digits
effectively double the accuracy of Excel

To use a Decimal in VBA, declare it as a variant, then use the CDec() function to convert an input value into a decimal. If data is being read from a spreadsheet cell it may be entered as a number if it has 15 or less significant figures, or as a text string if 16 or more figures are required.

So - your results will be put into excel cells as text strings maybe using your own separator either at the 15 to 14 - so getting what you can use as an Excel Integer, ending with a ., and the rest as the decimal part, or if the number is within Excel bounds, where a decimal point would go, and holding the rest as a float - or use an E type format to hold most significant digits, and then a mantissa with a third part to hold any significant digits below the 15.
and remember - the sign applies to both parts of the "value"
And
The Integer and Long data types can both hold positive or negative values.
The difference between them is their size:
Integer variables can hold values between -32,768 and 32,767,
while Long variables can range from -2,147,483,648 to 2,147,483,647
AND Decimal is what you need for longer ones in VBA

Basically an essential when dealing with stock and bonds in international currency -
Well you never know which currency may be used in a purchase, and paid for shares valued in a different currency.
or even how many billion of them may be in the deal !

The client may not be bothered with a little rounding -
but the returns to the government better be accurate to the totals of individual transactions in the units of the currencies used !

and there is the [HH] format for hours and days ,months, years to be shown as elapsed hours
within the 1900, or 1904 start date - including the 29th February 1900


Yup - that's why XCOPY almost always thinks files on a NTFS partition are newer than the copy of it you just made to your iPad transfer - ExFAT formatted USB storage device !


And VBA uses bankers rounding -
0.5 gets rounded up in the first calculation, down in the next - then ...up down, up, down ....
And for files within Windows OS File manager - you get milliseconds under NTFS but not from file storage management such as ExFAT ect.
And - for other programming languages and apps -
there is a fairly well conformed to Integer is - 32768 or 32767 if +
then there is Long long almost always 9223372036854775808 or 7 if +

While what you get "long" may depend on the version of the OS being used !

Maybe worth a check calculation in the start of a routine to see what the OS is doing to the calculations


This Site

Got a version of Excel that uses the ribbon interface (Excel 2007 or later)? This site is for you! If you use an earlier version of Excel, visit our ExcelTips site focusing on the menu interface.

Newest Tips
Subscribe

FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."

(Your e-mail address is not shared with anyone, ever.)

View the most recent newsletter.