1

У меня есть документ, который транскрипция видео-интервью. Само видео имеет встроенный временной код SMPTE, а также встроенный временной код (BITC). Временной код SMPTE и BITC соответствуют времени суток, когда было снято интервью, в 24-часовом формате.

В документе транскрипции есть метки времени в квадратных скобках каждые две минуты в формате [hh:mm] . Однако эти метки времени транскрипции начинаются с «00:00».

Есть ли способ использовать своего рода функцию "Поиск и замена", чтобы пройти по документу, найти все экземпляры hh:mm и добавить фиксированное время к этим временным меткам, отражая тем самым время дня, соответствующее временному коду SMPTE ?

Идеальным решением будет инструмент, который:

  1. Находит все метки времени в формате [hh:mm]
  2. Добавляет время начала интервью "yy:yy" в 24-часовом формате ко всем тем оригинальным временным меткам "xx:xx".
  3. Заменяет временные метки на новую, исправленную временную метку zz:zz, которая будет равна xx:xx+yy:yy.

Например, если мое собеседование началось в 9:30 утра, каждая временная метка будет заменена следующим образом:

  1. 00:00 + 9:30 = 9:30
  2. 00:02 + 9:30 = 9:32
  3. 00:04 + 9:30 = 9:34
  4. И т.п.

1 ответ1

0

Я сомневаюсь, что это лучший способ сделать это, но вот одно решение. Это, очевидно, не очень хорошо отработано, так как я не уверен, как вы будете вводить приращение времени или если данные представляют собой просто абзац в одной ячейке, но это должно помочь вам в этом.

Он разбивает значение активной ячейки на массив в поисках «[», затем корректирует первые 2 символа на шаг в час и символы 4 и 5 на минутный шаг, а затем собирает все обратно.

Также это работает на Activecell, что не очень хорошая практика кодирования.

Sub update_times()

    Dim sParts() As String
    Dim input_text As String
    Dim output_text As String
    Dim split_on As String
    Dim hours_add As Integer
    Dim minutes_add As Integer
    Dim hours_final As Integer
    Dim minutes_final As Integer

    split_on = "["
    hours_add = 9
    minutes_add = 30
    input_text = ActiveCell.Value

    sParts = Split(input_text, split_on)
    output_text = sParts(0)

    For i = 1 To UBound(sParts)
        hours_final = Left(sParts(i), 2) + hours_add
        minutes_final = Mid(sParts(i), 4, 2) + minutes_add
        'checks to wrap data
        If minutes_final > 59 Then
            hours_final = hours_final + 1
            minutes_final = minutes_final - 60
        End If
        If hours_final > 23 Then
            hours_final = hours_final - 24
        End If
        'put the part back together with the new hour and minutes
        sParts(i) = "[" & Format(hours_final, "00") & ":" & Format(minutes_final, "00") & Right(sParts(i), Len(sParts(i)) - 5)
        'add the part to the final string
        output_text = output_text & sParts(i)
    Next
    ActiveCell.Value = output_text

End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .