ドキュメント内のすべての「hh:mm」文字列に固定の時間を追加するにはどうすればよいですか?

ドキュメント内のすべての「hh:mm」文字列に固定の時間を追加するにはどうすればよいですか?

ビデオ インタビューの書き起こし文書があります。ビデオ自体には、SMPTE タイムコードと焼き込みタイムコード (BITC) が埋め込まれています。SMPTE タイムコードと BITC は、インタビューが撮影された時刻 (24 時間形式) に対応しています。

転写文書には、形式で 2 分ごとに角括弧で囲まれたタイムスタンプがあります[hh:mm]。ただし、これらの転写タイムスタンプは「00:00」から始まります。

hh:mm一種の「検索と置換」機能を使用してドキュメントを調べ、すべてのインスタンスを検索し、それらのタイムスタンプに固定時間を追加して、時刻を反映させ、SMPTE タイムコードと一致させる方法はありますか?

完璧な解決策は次のようなツールです:

  1. [hh:mm]フォーマット内のすべてのタイムスタンプを検索します
  2. インタビュー開始時刻「yy:yy」を 24 時間形式ですべての元のタイムスタンプ「xx:xx」に追加します。
  3. タイムスタンプを新しい修正されたタイムスタンプ「zz:zz」に置き換えます。これは xx:xx+yy:yy に相当します。

たとえば、面接が午前 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

これが最善の方法かどうかは疑問ですが、ここに 1 つの解決策があります。時間増分をどのように入力するのか、データが 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

関連情報