プロが教える店舗&オフィスのセキュリティ対策術

エクセルでドロップフレームの計算が出来ないかお聞かせください。
例えば、1800f = 00:01:00:00ですが、ドロップフレームでは00:01:00:02となりますね。
これをエクセルの関数で実現することは出来ますでしょうか?
1800f -> hh:mm:ss:ff
というのをドロップフレームを組み込んだ形でしたいのですが。

よろしくお願いします。

質問者からの補足コメント

  • ご回答ありがとうございます!
    ①の1799f~1801fはその動きです。
    ②の表示形式はそれで構いません。

    No.1の回答に寄せられた補足コメントです。 補足日時:2016/08/09 09:47
  • 計算式についてありがとうございます。すごく助かります。
    少しだけ。どうやら18000f以降が一致しなくなります。
    18000f -> 00:10:00.20 (正)00:10:00.18
    18005f -> 00:10:00.25 (正)00:10:00.23
    36000f -> 00:20:01.10 (正)00:20:01.06

    17999fまでは正しく変換されるのですが、18000fの計算で3f加算されてしまうようです。

    No.2の回答に寄せられた補足コメントです。 補足日時:2016/08/09 10:27
  • GooUserラックさん
    申し訳ありません、きっちり説明しなかった私が悪かったです。
    ドロップフレームは分の単位で、00分,10分,20分,30分,40分,50分の時にはフレームの00,01は
    存在しますが、他の分表示の時は、00fと01fを無くしてしまう。という仕組みです。

    1分のタイムコード表記の場合、ドロップフレーム表記をしないと、00:01:00:00となります。
    ドロップフレーム表記では00:00:59:29の次は00:01:00:02となり、00f,01fはカウントしません。
    でも10分単位の時は、00:09:59:29 -> 00:10:00:00 -> 00:10:00:01とカウントする仕組みです。

    No.6の回答に寄せられた補足コメントです。 補足日時:2016/08/10 19:45
  • moto_koukouseiさん、ありがとうございます。
    No.6 GooUserラックさんのコメントに補足させていただきましたが、

    ドロップフレームは分の単位で、00分,10分,20分,30分,40分,50分の時にはフレームの00,01は
    カウントしますが、他の分表示の時は、00fと01fを無くしてしまう。という仕組みです。
    1分のタイムコード表記の場合、ドロップフレーム表記をしないと、00:01:00:00となります。
    1800fをタイムコード表記すると 00:01:00:02となります。
    18000fをタイムコード表記すると00:10:00:00となります。
    よろしくお願いします。

    No.9の回答に寄せられた補足コメントです。 補足日時:2016/08/10 20:10

A 回答 (10件)

済みません。

《ドロップフレーム》という言葉を知らなかったので、興味を持ちました。
このサイトを見て、http://www.weblio.jp/content/%E3%83%89%E3%83%AD% …
最初は、経過時間から固有DFの番号を計算するのかと、勘違いしていました。
質疑応答の流れを読んだら、DFの総数から《総時間と秒に満たないフレームの数を同時表記する》のが目的のようでした。
そうであれば、比較的簡単なように思いました。
仮にA1のセルに《DFの総数》があるなら、目的のセルに次の式を書けば出来るのかな。
=TEXT(HOUR(INT(A1/29.97)/86400),"00:")&
TEXT(MINUTE(INT(A1/29.97)/86400),"00:")&
TEXT(SECOND(INT(A1/29.97)/86400),"00.")&
TEXT(INT(MOD(A1,29.97)),"0f")
EXCELシートでは下のようになります。
「ドロップフレームの計算をエクセルで出来ま」の回答画像9
この回答への補足あり
    • good
    • 0

No.9の回答者です。


質問者さんの文がよくわかりません。
No.2への追加コメント 
> どうやら18000f以降が一致しなくなります。
> 18000f -> 00:10:00.20 (正)00:10:00.18
No.2への補足コメント
> 18000fをタイムコード表記すると00:10:00:00となります。
No.9の回答画面の中の表示
  18000に対応するもの 00:10:00.18f
No.9の回答では、18000は、DFの数(個数《DFの総数》)です。DFの番号がどういうものか分かりませんが、番号を意識したものではないです。
【00分,10分,20分,30分,40分,50分の時にはフレームの00,01はカウントしますが、他の分表示の時は、00fと01fを無くしてしまう。という仕組みです】この意味をどうとるのかが、私に分かってないのです。 例えば、999999876が20分目justのとき、その次を【999999879】と名付けて、二個数字を飛ばすのでしょうか。そのようにするのであれば、それをベースに計算しますが、そのような計算をする(=経過時間から固有DFの番号を計算する)と、番号は飛び飛びになります。また、番号は連番でとり、撮影開始から00分,10分,20分,30分,40分,50分目に二フレーム分取り込まない方式にするというのは、実際上あり得ないと思います。
DFの総数から《1秒未満を切り捨てた総時間と秒に満たないフレームの数を同時並列表記する》として考えると、次のサイトを参考にすることが出来ます。
http://keisan.casio.jp/exec/system/13814530574678
それで作ったのが、No.9の式です。
18000f  とか 218015の場合には、どのようにでる式にして欲しいのでしょうか。
「ドロップフレームの計算をエクセルで出来ま」の回答画像10
    • good
    • 0
この回答へのお礼

質問内容がしっかりしておらず失礼しました。
いただいた関数をヒントに検討しなおします。
ありがとうございました。

お礼日時:2017/02/02 17:04

No.7 の訂正です(別のセルの式をコピーしてしまいました)すみませんでした。


=INT((A1+INT(A1/1800)*2-INT(A1/18000)*2)/30)/86400+(((A1+INT(A1/1800)*2-INT(A1/18000)*2)/30-INT((A1+INT(A1/1800)*2-INT(A1/18000)*2)/30))*3/864000)
    • good
    • 0
この回答へのお礼

申し訳ありません、明確な質問内容とならず。
いただいた関数を参考に考えてみます。
ありがとうございました。

お礼日時:2017/02/02 16:58

No.6 の仕様の式です。

(もう少し最適化出来ると思いますがとりあえず)
=INT((A36001+INT(A36001/1800)*2-INT(A36001/18000)*2)/30)/86400+(((A36001+INT(A36001/1800)*2-INT(A36001/18000)*2)/30-INT((A36001+INT(A36001/1800)*2-INT(A36001/18000)*2)/30))*3/864000)
    • good
    • 0

もしかしたらですが、うるう年みたいな事になっているのですか?


・1分ごとに2フレーム追加する。
・ただし10分で割れる時は追加フレーム無にする。
この先とかは何かありますか?
この回答への補足あり
    • good
    • 0

No.1 と No.3 の修正です。

自分では下記のように書いたつもりでした。すみませんでした。

☆ No.1(「1799f」と「1800f」との差は「3f」)
1799f -> 00:00:59:29
1800f -> 00:01:00:02
1801f -> 00:01:00:03

☆ No.3(「1799f」と「1800f」との差は「2f」)
1799f -> 00:00:59:29
1800f -> 00:01:00:01
1801f -> 00:01:00:02
    • good
    • 0

No.3 仕様の計算式です


=INT((A1+INT(A1/1800))/30)/86400+(((A1+INT(A1/1800))/30-INT((A1+INT(A1/1800))/30))*3/864000)

※「3f 加算ですよ」についての説明。
通常分で「1f」+加算分で「2f」なので結果「3f」追加になります。
    • good
    • 0

すみません No.1 の仕様ですと 3f 加算ですよ!


以下のようなものでよいのですか?
1799f -> 00:00:59:29
1180f -> 00:01:00:01
1181f -> 00:01:00:02
    • good
    • 0

回答がありませんがNo.1での対応の場合


☆ 条件
・A列にフレーム数が入力されていて、表示形式が「0"f"」としている。
 (フレーム数が整数で入っているが、表示は「○○f」の用に表示される)
・B列に結果が表示され、表示形式が「hh:mm:ss.00」としている。
 (見た目には「hh:mm:ss.ff」のように見えるが、実際には違うので、ここを使っての足し算は出来ません、元のセルの値を使って計算してください)
☆ 計算式(もう少しきれいに出来ると思いますがとりあえず…)
=INT((A1+INT(A1/1800)*2)/30)/86400+(((A1+INT(A1/1800)*2)/30-INT((A1+INT(A1/1800)*2)/30))*3/864000)
この回答への補足あり
    • good
    • 0

いくつか質問があります。


① 動作は次の感じでよろしいですか?
1799f -> 00:00:59:29
1180f -> 00:01:00:02
1181f -> 00:01:00:03
② 表示形式ですが「hh:mm:ss.ff」でもよろしいですか?
 (「ss」と「ff」の間が「:」ではなく「.」になります)
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!