Como posso adicionar uma quantidade fixa de tempo a todas as strings "hh: mm" em um documento?

1

Eu tenho um documento que é uma transcrição de uma entrevista em vídeo. O vídeo em si incorporou o timecode SMPTE, bem como o timecode queimado (BITC). O timecode SMPTE e o BITC correspondem à hora do dia em que a entrevista foi gravada, em formato de 24 horas.

No documento de transcrição, há carimbos de data e hora entre colchetes a cada dois minutos, no formato [hh:mm] . No entanto, esses timestamps 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, localizar todas as instâncias de hh:mm e adicionar um horário fixo a esses carimbos de data / hora, refletindo a hora do dia, correspondendo o timecode SMPTE?

A solução perfeita seria uma ferramenta que:

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

Então, por exemplo, se minha entrevista começasse às 9:30 da manhã, cada timestamp 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.
por user260467 28.05.2015 / 23:59

1 resposta

0

Eu duvido que esta é 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ê estará colocando seu incremento de tempo ou se os dados são apenas um parágrafo em uma célula, mas isso deve levá-lo a maior parte do caminho até lá.

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

Isso também funciona na célula ativa, o que não é uma boa prática de codificação.

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
    
por 29.05.2015 / 19:13