web-dev-qa-db-ja.com

タイムスタンプ00:00:00.000を合計秒数とミリ秒に変換します

00:02:02.300のようなタイムスタンプが残るという問題があります:時間-分-秒-ミリ秒。

そして必死にそれを合計秒数に変換する必要があります。私にはミリ秒のビットがあり、Excelには明確なフォーマットがないため、ミリ秒を簡単に「クリップ」することができないため、これはトリッキーです。最良の場合のシナリオでは、合計秒数と6528.32などのミリ秒が必要になります。

3
Marco Jajac

タイムスタンプが常にその形式(HH:mm:ss.SSS)であることが確実な場合は、次のExcel関数を使用できます(タイムスタンプがセルA1にあり、テキストのようにフォーマットされている場合):

=VALUE(RIGHT(A1, 6))+60*VALUE(MID(A1, 4, 2))+3600*(LEFT(A1, 2))

タイムスタンプが00:02:02.300、これは結果122.3

日付としてフォーマットされている場合は、さらに簡単です。

=A1*86400

(Excelは時間を1日の端数として保存するため、たとえば、12:00:00は24時間の半分であるため0.5として保存されます)

3
Glorfindel

セルに_00:02:02.300_がある場合、テキストとしてフォーマットされていると、このように表示されることがあります1、または別の形式になっていると、表示が異なる場合があります。

トリックは、秒とミリ秒のみを取得するのが簡単です。つまり、_122.300_です。

まず、_00:02:02.300_がセルA1にあると仮定します。それを強調表示し、数値としてフォーマットします。ナンセンスに見えるものを表示します。たぶん0.00。セルB1に移動し、_=A1*86400_と入力します。セルB1には_122.3_が含まれます。末尾のゼロを取得するには、B1を数値としてフォーマットし、好みに合わせて調整します。

グロルフィンデルのVALUE解を正しく与えるには、式は次のようになります。

_=VALUE(3600*LEFT(A1,2))+VALUE(60*(MID(A1,4,2))+VALUE(MID(A1,7,2))+VALUE(MID(A1,9,3))
_

この式が何をしているかを説明します。セル_A1_をテキスト文字列として調べ、その一部を数値に変換し、それらを適切に加算して合計秒数にします。 4つの部分があります。

  1. VALUE(3600*LEFT(A1,2))
  2. VALUE(60*(MID(A1,4,2))
  3. VALUE(MID(A1,7,2))
  4. VALUE(MID(A1,9,3))

文字列_00:02:02.300_を見ると、基本的には_:_と_._で区切られた4つの数値であることがわかります。これらの4つの数値はそれぞれ、左から右に、上記の4つの部分に対応しています。

VALUE(3600*LEFT(A1,2))は_00_、時間の場所を秒に変換しています。項目2は次の数値_02_で機能し、それを分に変換します。等々。ここで、完全な式で、上記のリストの各項目がadded_+_にまとめられていることに注意してください。これにより、秒と小数点以下の_122.3_が得られます。この数式の内容を理解できない場合は、Excelでゆっくりと入力し、自動的に表示される数式のヒントに注意してください。各パーツの機能が正確にわかります。

上記のリストのすべての項目を独自の個別のセルに入れると、出力は次のようになります。

  1. _0_
  2. _120_
  3. _2_
  4. _0.3_

まとめて、何を手に入れますか?ビビディバビディブー!それらを合計して、それが_0 + 120 + 2 + 0.3 = 122.3_です。2

データをさらに整理して管理するために、新しいセルデータをすべて秒と小数でコピーし、値のみとして貼り付けることをお勧めします-)新しいセルに。


  1. A1が既にテキストとしてフォーマットされている場合は、そのままにしておきます。 Excelは、セルB1の数式で正しく使用します。 注意、形式間で相互に変換すると、データが永久に混乱する可能性があります。メインファイルではなく、データのコピーを使用して作業することを強くお勧めします。フォーマットやテキストから数値への変換(VALUE数式が行うこと)を試してみると、誤って永久に変更してしまう可能性が高いからです。使用できないデータへのデータ。
  2. この時点で、なぜ_02_と_300_を分離する必要があるのでしょうか? _.300_は秒の一部であり、_02_も秒です。彼らは同じものです。まあ、将来のデータには、_,_や_;_のように、将来的に独特の区切り文字が含まれる可能性があります。私が持っているデータは、それを_;_で区切っており、末尾の数字は実際にはその時間枠内のビデオのフレームなので、小数秒を取得するために追加の計算を行う必要があります。
1
287352

RE:#VALUE!エラー

RE:Value()関数

例(XLワークシートを使用してセルを入力およびフォーマットする)

A1カスタム形式としてhh:mm:ss.000とし、16:48:30.001と入力します

B1の一般的な形式で問題ありません。数式を入力してください:= TIMEVALUE(TEXT(A1、 "hh:mm:ss.000"))

C1数式を入力:= TIMEVALUE(A1)

結果:

A1 16:48:30.000 B1 0.700347222 C1 #VALUE!

セル式のコメント:

A1:16:48:30.000はVALUEで入力しただけで、セルはhh:mm:ss.000の形式になります

B1:= TIMEVALUE(TEXT(A1、 "hh:mm:ss.000"))これは機能しますTEXT(..)は、A1のVALUEを "hh:mm:ss.000"の形式でTEXTに変換します。 TIMEVALUE関数は

C1:= TIMEVALUE(A1)-#VALUE! A1はVALUE ALREADYであるため、テキストのようにフォーマットされています。

0
ken jett

以下のスクリーンショットに示すようにセルまたはセルの範囲をフォーマットし、ミリ秒を記録します。

enter image description here

  • 次に、時間を入力します。=Now()を使用して現在の時間を入力しました。
  • 任意の数式を使用して、時間(ミリ秒)を合計秒に変換できます。

=L13*86400または=L13*24*60*60取得します38574

注:

  • これらの数式を書く前に、小数点フォーマットがゼロのNUMBER形式をセルに適用します。
  • 必要に応じて、数式のセル参照を調整します。
0
Rajesh S