문서의 모든 "hh:mm" 문자열에 고정된 시간을 어떻게 추가할 수 있나요?

문서의 모든 "hh:mm" 문자열에 고정된 시간을 어떻게 추가할 수 있나요?

비디오 인터뷰를 녹취한 문서가 있습니다. 비디오 자체에는 SMPTE 타임코드와 BITC(번인 타임코드)가 내장되어 있습니다. SMPTE 타임코드와 BITC는 인터뷰가 촬영된 시간(24시간 형식)에 해당합니다.

전사 문서에는 2분마다 대괄호 안에 타임스탬프가 [hh:mm]형식으로 표시되어 있습니다. 그러나 이러한 전사 타임스탬프는 '00:00'부터 시작됩니다.

일종의 "검색 및 바꾸기" 기능을 사용하여 문서를 탐색하고 모든 인스턴스를 찾아 hh:mm해당 타임스탬프에 고정 시간을 추가하여 시간을 반영하고 SMPTE 타임코드와 일치시키는 방법이 있습니까?

완벽한 솔루션은 다음과 같은 도구입니다.

  1. [hh:mm]형식 의 모든 타임스탬프를 찾습니다.
  2. 모든 원래 타임스탬프 "xx:xx"에 인터뷰 시작 시간 "yy:yy"를 24시간 형식으로 추가합니다.
  3. 타임스탬프를 xx:xx+yy:yy와 동일한 새로운 수정된 타임스탬프 "zz:zz"로 바꿉니다.

예를 들어 인터뷰가 오전 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

이것이 최선의 방법인지는 의심스럽지만 여기에 한 가지 해결책이 있습니다. 시간 증가분을 어떻게 입력할지 또는 데이터가 한 셀의 단락에 불과한지 확실하지 않기 때문에 분명히 세련되지는 않았지만 대부분의 방법을 얻을 수 있습니다.

활성 셀 값을 "["를 찾는 배열로 분할한 다음 처음 2자를 시간 단위로 조정하고 문자 4와 5를 분 단위로 조정한 다음 모두 다시 합칩니다.

또한 이것은 매우 좋은 코딩 방법이 아닌 활성 셀에서 작동합니다.

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

관련 정보