Como posso adicionar um período fixo de tempo a todas as strings “hh:mm” em um documento?

Como posso adicionar um período fixo de tempo a todas as strings “hh:mm” em um documento?

Tenho um documento que é a transcrição de uma entrevista em vídeo. O vídeo em si possui timecode SMPTE incorporado, bem como timecode gravado (BITC). O timecode SMPTE e o BITC correspondem ao horário do dia em que a entrevista foi filmada, no formato 24 horas.

No documento de transcrição, há carimbos de data/hora entre colchetes a cada dois minutos, no [hh:mm]formato. No entanto, esses carimbos de data/hora de transcrição começam em '00:00'.

Existe uma maneira de usar um tipo de função "Pesquisar e Substituir" para percorrer o documento, encontrar todas as instâncias hh:mme adicionar um horário fixo a esses carimbos de data e hora, refletindo assim a hora do dia, correspondendo ao código de tempo SMPTE?

A solução perfeita seria uma ferramenta que:

  1. Encontra todos os carimbos de data/hora no [hh:mm]formato
  2. Adiciona a hora de início da entrevista, "yy:yy" no formato de 24 horas a todos os carimbos de data/hora originais, "xx:xx".
  3. Substitui os carimbos de data/hora pelo novo carimbo de data/hora corrigido, "zz:zz", que seria igual a xx:xx+yy:yy.

Por exemplo, se minha entrevista começasse às 9h30 da manhã, cada carimbo de data/hora seria substituído da seguinte maneira:

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

Responder1

Duvido que esta seja a melhor maneira de fazer isso, mas aqui está uma solução. Obviamente, não é muito polido, pois não tenho certeza de como você investirá no incremento de tempo ou se os dados são apenas um parágrafo em uma célula, mas isso deve levar você até lá.

Ele divide o valor da célula ativa em uma matriz procurando por "[", em seguida, ajusta os 2 primeiros caracteres em incrementos de hora e os caracteres 4 e 5 em incrementos de minutos e, em seguida, reúne tudo novamente.

Além disso, isso funciona na célula ativa, o que não é uma prática de codificação muito boa.

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

informação relacionada