ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
32 visibility
موضوع: آفیس توسط:

جان در صنعت تلویزیون کار می کند، جایی که زمان بندی با وضوح کمتر از یک ثانیه انجام می شود. ویدئوی تلویزیونی باید ساعت ها، دقیقه ها، ثانیه ها و فریم ها را در نظر بگیرد. (در هر ثانیه سی فریم وجود دارد.) جان در این فکر بود که آیا راهی برای کنترل فریم ها در اکسل وجود دارد؟

هیچ راهی برای کنترل فریم ها به عنوان بخشی از مقادیر زمانی بومی در اکسل وجود ندارد. (در صنعت تلویزیون، مقدار زمانی که شامل فریم‌ها می‌شود، اغلب به عنوان «کد زمانی» یا «کد زمانی» نامیده می‌شود.) با این حال، چند کار وجود دارد که می‌توانید برای کار با فریم‌ها انجام دهید. شاید واضح‌ترین پیشنهاد این باشد که ساعت‌ها، دقیقه‌ها و ثانیه‌ها را به‌عنوان یک مقدار زمانی منظم نگه دارید و سپس فریم‌ها را در یک سلول جداگانه قرار دهید. اشکال فوری این رویکرد این است که محاسبات برای «زمان‌های تلویزیونی» به آسانی اگر در یک مقدار نمایش داده می‌شدند، نیست.

یک راه حل این است که سعی کنید محاسبات خود را در یک ماکرو انجام دهید. اکسل یک فرآیند داخلی تبدیل زمان ها به مقادیر اعشاری را انجام می دهد که می توان با آن بسیار آسان کار کرد. شما می توانید همین فرآیند تبدیل را شبیه سازی کنید و یک مقدار زمانی (از جمله فریم ها) را به یک مقدار اعشاری تبدیل کنید. زمان تلویزیون، با فرمت 00:29:10:10، می تواند در یک سلول ذخیره شود (که اکسل آن را به عنوان یک رشته در نظر می گیرد) و سپس توسط ماکرو به یک مقدار تبدیل می شود.

البته در اینجا یک مشکل وجود دارد: شما نمی توانید زمان را به یک مقدار اعشاری واقعی بین 0 و 1 تبدیل کنید، همانطور که اکسل برای بارها انجام می دهد. دلیل آن مربوط به محدودیت ارقام قابل توجه اکسل است. برای رسیدن به یک مقدار، باید ساعت ها را بر 24، دقیقه ها را بر 1440 (24 * 60)، ثانیه ها را بر 86400 (24 * 60 * 60) و فریم ها را بر 2592000 (24 * 60 * 60 * 30) تقسیم کنید. شما با سرعت 30 فریم در ثانیه کار می کنید). وقتی شروع به وارد کردن مقادیر بسیار کوچک می کنید، از محدودیت های Excels برای حفظ همه چیز تا پانزده رقم قابل توجه فراتر می رود. بنابراین، شما با خطاهای گرد کردن اجتناب ناپذیر در مقدار فریم ها مواجه می شوید.

یک راه حل برای این مشکل این است که سعی نکنید با مقادیر اعشاری بین 0 و 1 کار کنید، بلکه با اعداد صحیح کار کنید. اگر زمان رشته را به یک مقدار صحیح تبدیل کنید که تعداد کل فریم‌ها را در زمان نشان می‌دهد، می‌توانید به راحتی روی مقدار حاصل محاسبه کنید. ماکرو زیر تبدیل یک رشته را با فرمتی که قبلا ذکر شد انجام می دهد:

Function Time2Num(Raw) As Long
    Dim FirstColon As Integer
    Dim SecondColon As Integer
    Dim ThirdColon As Integer
    Dim NumHours As Integer
    Dim NumMinutes As Integer
    Dim NumSeconds As Integer
    Dim NumFrames As Integer
    Dim FrameRate As Integer
    Dim T2D As Long

     Change the following to the number of frames
     per second with which you are working
    FrameRate = 30

    FirstColon = InStr(Raw, ":")
    SecondColon = InStr(FirstColon + 1, Raw, ":")
    ThirdColon = InStr(SecondColon + 1, Raw, ":")

    NumHours = Val(Mid(Raw, 1, FirstColon - 1))
    NumMinutes = Val(Mid(Raw, FirstColon + 1, SecondColon - 1))
    NumSeconds = Val(Mid(Raw, SecondColon + 1, ThirdColon - 1))
    NumFrames = Val(Mid(Raw, ThirdColon + 1, Len(Raw)))

    T2D = CLng(NumHours)
    T2D = T2D * 60 + NumMinutes
    T2D = T2D * 60 + NumSeconds
    T2D = T2D * FrameRate + NumFrames

    Time2Num = T2D
End Function

برای اینکه ببینید چگونه این کار می کند، اگر رشته ای مانند 37:15:42:06 در سلول A4 دارید و از فرمول =Time2Num(A4) استفاده می کنید، نتیجه مقدار 4024266 است که تعداد فریم ها در 37 است. ساعت و 15 دقیقه و 42 ثانیه و 6 فریم. برای تبدیل چنین مقادیری به زمان قابل درک، می توانید از تابع زیر استفاده کنید:

Function Num2Time(Raw) As String
    Dim NumHours As Integer
    Dim NumMinutes As Integer
    Dim NumSeconds As Integer
    Dim NumFrames As Integer
    Dim FrameRate As Integer
    Dim RemainingTime As Long

     Change the following to the number of frames
     per second with which you are working
    FrameRate = 30

    NumHours = Raw  (CLng(FrameRate * 60) * 60)
    RemainingTime = Raw Mod (CLng(FrameRate * 60) * 60)

    NumMinutes = RemainingTime  (60 * FrameRate)
    RemainingTime = RemainingTime Mod (60 * FrameRate)

    NumSeconds = RemainingTime  FrameRate
    RemainingTime = RemainingTime Mod FrameRate

    NumFrames = RemainingTime

    Num2Time = Format(NumHours, "00") & ":" & _
      Format(NumMinutes, "00") & ":" & _
      Format(NumSeconds, "00") & ":" & _
      Format(NumFrames, "00")
End Function

با ترکیب این دو تابع، می توانید مقداری ریاضی با زمان انجام دهید. برای مثال، فرض کنید در سلول A4 زمان 00:29:10:10 و در سلول A5 زمان 00:16:12:23 داشتید. اگر فرمول زیر را در یک سلول قرار دهید، می توانید تفاوت بین این دو زمان را دریابید:

=Num2Time(Time2Num(A4)-Time2Num(A5))

نتیجه 00:12:57:17 است.

نمونه های ارائه شده در اینجا ابتدایی هستند. آنها هیچ گونه رسیدگی به خطا یا بررسی محدودیت زمان استفاده را در نظر نمی گیرند. می‌توانید نمونه‌ها را متناسب با نیاز خود گسترش دهید، یا می‌توانید به منبع شخص ثالث مراجعه کنید. برای مثال، می‌توانید توضیحی (همراه با یک نمونه کار) برای زمان‌های NTSC و PAL در URL زیر پیدا کنید:

http://www.kenstone.net/fcp_homepage/timecode_spreadsheet.html

راه‌حل‌های مبتنی بر کلان دیگری نیز در سراسر اینترنت شناور هستند. بهترین روش استفاده از موتور جستجوی مورد علاقه خود و جستجوی "timecode excel" یا "time code excel" (بدون نقل قول) است. نمونه های زیادی از کدها را پیدا خواهید کرد که می توانید با آنها شروع کنید.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 37 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 54 visibility
ارسال شده در 27 تیر 1402 موضوع: آفیس توسط: Admin
0 دوستدار 0 امتیاز منفی
0 پاسخ 30 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 54 visibility
ارسال شده در 27 تیر 1402 موضوع: آفیس توسط: Admin
0 دوستدار 0 امتیاز منفی
0 پاسخ 52 visibility

24.3k سوال

9.6k پاسخ

614 دیدگاه

11.2k کاربر

212 نفر آنلاین
0 عضو و 212 مهمان در سایت حاضرند
بازدید امروز: 4820
بازدید دیروز: 25180
بازدید کل: 20342173
...