¿Cómo puedo agregar una cantidad fija de tiempo a todas las cadenas "hh:mm" de un documento?

¿Cómo puedo agregar una cantidad fija de tiempo a todas las cadenas "hh:mm" de un documento?

Tengo un documento que es la transcripción de una entrevista en video. El vídeo en sí tiene código de tiempo SMPTE incorporado, así como código de tiempo grabado (BITC). El código de tiempo SMPTE y BITC corresponden a la hora del día en que se rodó la entrevista, en formato de 24 horas.

En el documento de transcripción, hay marcas de tiempo entre corchetes cada dos minutos, en [hh:mm]formato. Sin embargo, estas marcas de tiempo de transcripción comienzan a las '00:00'.

¿Existe alguna forma de utilizar una especie de función "Buscar y reemplazar" para revisar el documento, encontrar todas las instancias hh:mmy agregar una hora fija a esas marcas de tiempo, reflejando así la hora del día y coincidiendo con el código de tiempo SMPTE?

La solución perfecta sería una herramienta que:

  1. Encuentra todas las marcas de tiempo en [hh:mm]formato
  2. Agrega la hora de inicio de la entrevista, "yy:yy" en formato de 24 horas a todas esas marcas de tiempo originales, "xx:xx".
  3. Reemplaza las marcas de tiempo con la nueva marca de tiempo corregida, "zz:zz", que sería igual a xx:xx+yy:yy.

Entonces, por ejemplo, si mi entrevista comenzara a las 9:30 de la mañana, cada marca de tiempo se reemplazaría de la siguiente manera:

  1. 00:00 + 9:30 = 9:30
  2. 00:02 + 9:30 = 9:32
  3. 00:04 + 9:30 = 9:34
  4. Etc.

Respuesta1

Dudo que esta sea la mejor manera de hacerlo, pero aquí hay una solución. Obviamente no está muy pulido ya que no estoy seguro de cómo destinará su incremento de tiempo o si los datos son solo un párrafo en una celda, pero debería llevarlo hasta allí.

Divide el valor de la celda activa en una matriz buscando "[", luego ajustó los primeros 2 caracteres por paso de hora y los caracteres 4 y 5 por paso de minuto y luego lo vuelve a juntar todo.

Además, esto funciona en activecell, lo cual no es una muy buena práctica de codificación.

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

información relacionada