Wie kann ich allen „hh:mm“-Zeichenfolgen in einem Dokument eine feste Zeitspanne hinzufügen?

Wie kann ich allen „hh:mm“-Zeichenfolgen in einem Dokument eine feste Zeitspanne hinzufügen?

Ich habe ein Dokument, das eine Transkription eines Videointerviews ist. Das Video selbst hat einen eingebetteten SMPTE-Timecode sowie einen eingebrannten Timecode (BITC). Der SMPTE-Timecode und der BITC entsprechen der Tageszeit, zu der das Interview aufgenommen wurde, im 24-Stunden-Format.

Im Transkriptionsdokument sind alle zwei Minuten Zeitstempel in eckigen Klammern im [hh:mm]Format vorhanden. Diese Transkriptionszeitstempel beginnen jedoch bei „00:00“.

Gibt es eine Möglichkeit, mit einer Art „Suchen und Ersetzen“-Funktion das Dokument zu durchsuchen, alle Vorkommen hh:mmdieser Zeitstempel zu finden und ihnen eine feste Zeit hinzuzufügen, um so die Tageszeit entsprechend dem SMPTE-Zeitcode widerzuspiegeln?

Die perfekte Lösung wäre ein Tool, das:

  1. Findet alle Zeitstempel im [hh:mm]Format
  2. Fügt allen ursprünglichen Zeitstempeln „xx:xx“ die Startzeit des Interviews „yy:yy“ im 24-Stunden-Format hinzu.
  3. Ersetzt die Zeitstempel durch den neuen, korrigierten Zeitstempel „zz:zz“, der xx:xx+yy:yy entspricht.

Wenn mein Interview beispielsweise um 9:30 Uhr morgens beginnen würde, würde jeder Zeitstempel folgendermaßen ersetzt:

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

Antwort1

Ich bezweifle, dass dies die beste Vorgehensweise ist, aber hier ist eine Lösung. Sie ist offensichtlich nicht sehr ausgefeilt, da ich nicht sicher bin, wie Sie Ihr Zeitinkrement eingeben oder ob die Daten nur ein Absatz in einer Zelle sind, aber sie sollte Sie größtenteils ans Ziel bringen.

Es teilt den aktiven Zellenwert in ein Array auf, sucht nach „[“, passt dann die ersten beiden Zeichen in Stundenschritten und die Zeichen 4 und 5 in Minutenschritten nach oben an und setzt dann alles wieder zusammen.

Dies funktioniert auch auf der Activecell, was keine sehr gute Codierungspraxis ist.

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

verwandte Informationen