Добавление временных кодов в Excel
У меня есть около 140 ячеек (они находятся в вертикальном столбце), содержащих временные коды в формате чч: мм: сс:ff. Есть 24 кадра в секунду. Я хотел бы добавить их, поэтому у меня есть общая продолжительность всех выдержек. Может кто-нибудь сказать мне, как я мог сделать это в Micosoft Excel? Любая помощь очень ценится, так как я буквально невежественен... Большое спасибо заранее!!
2 ответа
Вы можете получить продолжительность в кадрах, выполнив некоторые математические расчеты. Сначала вы должны выбрать каждую часть метки времени (Часы, Минуты, Секунды и Кадры), а затем просто вычислить ее, чтобы получить количество кадров с некоторого предыдущего момента времени (00:00:00:00). Из этого вы можете получить длительность каждого кадра от своего предшественника и суммировать результаты для общего:
Это может быть не лучшим способом (или может быть?), Но это работает.
- Отдельно чч: мм: сс от фф.
- Сумма чч: мм: сс и фф соответственно.
- Добавьте кадры в чч: мм: сс.
Этот код из моего дополнения Excel "TCCalculator". Калькулятор бесплатный, но не код. Я могу разместить здесь ссылку на мой Google Drive, если модератор даст мне свое разрешение
Вы должны сделать три вещи.
1- Create a Button to start the calculation (ButtonTC).
2- Create some VBA functions (I will show it to you)
3- Select a range and click on ButtonTC
С помощью этого метода мы можем выбрать диапазоны различных ячеек. Это составит сумму всего.
Все, что вам нужно, это следующие функции:
Частный Sub ButtonTC_Click
Private Sub ButtonTC_Click()
Dim framesRef As Double
‘framesRef can be 23.98, 24, 25, 29.97…
'Beware, the decimal point may vary depending on the system configuration
'The cell that will store the final result must be free of data. We can also get the result with a msgbox
Cells("1", "A") = f_CalculateRangeTC(framesRef)
End Sub
Открытая функция f_CalculateRangeTC
Public Function f_CalculateRangeTC(ByVal framesRef As Double) As String
Dim obj_Cell As Range
Dim sumaTotalFrames As Double
sumaTotalFrames = 0
For Each obj_Cell In Selection.Cells
With obj_Cell
sumaTotalFrames = sumaTotalFrames + f_CalculateTcInFrames(.Text, framesRef)
End With
Next
f_CalculateRangeTC = f_ConvertFramesTo_HHMMSSFF(sumaTotalFrames, framesRef)
End Function
Открытая функция f_CalculateTcInFrames
Public Function f_CalculateTcInFrames(ByVal numToConvert As String, ByVal framesRef As Double) As Double
Dim fra2f, seg2f, min2f, hor2f As Double
fra2f = 0
seg2f = 0
min2f = 0
hor2f = 0
‘This two sentences convert an unformated number to correct format 1:23:05 to 00012305
‘But this not work with this: 1:1:02 (1 minute, 1 second, 2 frames) becomes 00001102 ¡ERROR!
numToConvert = Replace(numToConvert, ":", "")
numToConvert = Right("00000000" & numToConvert, 8)
fra2f = Mid(numToConvert, 7, 2) 'Frames to frames
seg2f = Mid(numToConvert, 5, 2) * (framesRef) ‘Seconds to frames
min2f = Mid(numToConvert, 3, 2) * (60 * framesRef) ‘Minutes to frames
hor2f = Mid(numToConvert, 1, 2) * (3600 * framesRef) ‘Hours to frames
sumaFrames = hor2f + min2f + seg2f + fra2f
f_CalculateTcInFrames = sumaFrames 'Salimos de la función y devolvemos el valor.
Exit Function