Cálculo del tiempo de televisión (Microsoft Excel)
John trabaja en la industria de la televisión, donde la sincronización se realiza con una resolución más fina que un segundo. El video de televisión debe tener en cuenta horas, minutos, segundos y fotogramas. (Hay treinta fotogramas por segundo). John se preguntaba si había alguna forma de manejar los fotogramas en Excel.
No hay forma de manejar marcos como parte de los valores de tiempo nativos en Excel. (En la industria de la televisión, un valor de tiempo que incluye fotogramas a menudo se denomina «código de tiempo» o «código de tiempo»). Sin embargo, hay un par de cosas que puede hacer para trabajar con fotogramas. Quizás la sugerencia más obvia es mantener las horas, los minutos y los segundos como un valor de tiempo regular y luego colocar los fotogramas en una celda separada. El inconveniente inmediato de este enfoque es que los cálculos de los «tiempos de TV» no son tan fáciles como lo serían si estuvieran representados en un solo valor.
Una forma de evitar esto es intentar hacer sus propios cálculos en una macro.
Excel pasa por un proceso interno de conversión de tiempos a valores decimales con el que se puede trabajar muy fácilmente. Puede simular este mismo proceso de conversión, convirtiendo un valor de tiempo (incluidos los fotogramas) en un valor decimal. La hora de TV, en el formato 00: 29: 10: 10, podría almacenarse en una celda (donde Excel la tratará como una cadena) y luego la macro la convertiría en un valor.
Hay un problema aquí, por supuesto: no puede convertir el tiempo a un valor decimal verdadero entre 0 y 1 como lo hace Excel para los tiempos. La razón tiene que ver con los límites de los dígitos significativos de Excel. Para llegar a un valor, dividiría las horas por 24, los minutos por 1440 (24 60), los segundos por 86400 (24 60 60) y los fotogramas por 2592000 (24 60 60 30, asumiendo que está trabajando a 30 fotogramas). por segundo). Cuando comienza a obtener valores tan pequeños, excede los límites de Excel de mantener todo en quince dígitos significativos. Por lo tanto, termina con inevitables errores de redondeo en el valor de los fotogramas.
Una solución a este problema es no intentar trabajar con valores decimales entre 0 y 1, sino trabajar con números enteros. Si convierte el tiempo de la cadena en un valor entero que representa el número total de fotogramas en el tiempo, puede hacer cálculos matemáticos fácilmente con el valor resultante.
La siguiente macro hará la conversión de una cadena en el formato ya mencionado:
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
Para ver cómo funciona esto, si tiene una cadena como 37: 15: 42: 06 en la celda A4 y usa la fórmula = Time2Num (A4), el resultado es el valor 4024266, que es el número de fotogramas en 37 horas, 15 minutos, 42 segundos y 6 fotogramas. Para convertir dichos valores de nuevo a un tiempo comprensible, puede utilizar la siguiente función:
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
Combinando las dos funciones, puedes hacer algunos cálculos matemáticos con los tiempos. Por ejemplo, suponga que tiene la hora 00: 29: 10: 10 en la celda A4 y la hora 00: 16: 12: 23 en la celda A5. Si pones la siguiente fórmula en una celda, puedes encontrar la diferencia entre los dos tiempos:
=Num2Time(Time2Num(A4)-Time2Num(A5))
El resultado es 00: 12: 57: 17.
Los ejemplos presentados aquí son rudimentarios; no tienen en cuenta el manejo de errores ni limitan la verificación de los tiempos utilizados. Puede ampliar los ejemplos para que se ajusten a sus necesidades o puede buscar una fuente de terceros. Por ejemplo, puede encontrar una explicación (con un libro de trabajo de muestra) para los tiempos NTSC y PAL en la siguiente URL:
http://www.kenstone.net/fcp_homepage/timecode_spreadsheet.html
También hay otras soluciones basadas en macros flotando en Internet.
El mejor enfoque es utilizar su motor de búsqueda favorito y buscar «excel de código de tiempo» o «excel de código de tiempo» (sin las comillas). Encontrará muchos ejemplos de código con los que puede comenzar.
_Nota: _
Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.
link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador]
.
ExcelTips es su fuente de formación rentable en Microsoft Excel.
Este consejo (8353) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:
link: / excel-Calculating_TV_Time [Cálculo del tiempo de TV]
.