2016-11-02 16 views
1

私のテーブルには、yyyymmddhhmmddxxのデータを含む2つの列があります。最初に日付が含まれ、もう1つの時刻は精度が0.01秒です。たとえば、私は2016110217052349です。Excel VBAは日付+時刻の値を作成します

これを1つの値に変換して、dd/mm/yyyy hh:mm:ss.xxという形式で表示したいとします。たとえば、02/11/2016 17:05:23.49を取得したいとします。画分を渡す方法を、TimeSerialないが引数として時、分、秒を受け入れ

  1. 、すべてが整数型です:私はDateSerialTimeSerial関数を使用する必要があると思うが、私はどのように周りに行くには考えている2つの問題がありますそれの秒ですか?
  2. DateSerialは私の曜日を作成し、TimeSerialは自分の時刻を作成します。日付と時刻を引数にとり、このうち「その日、その時刻に」値を作成する関数はありますか?
+0

これはありませんが、あなたが持っているものを使って、2のセクションの中間でtimeserialを使って、timeserialのために追加して、カスタム文字列o/pを持っているので、あなた自身の関数GENERATE_TIMESTAMP )を数値2の場合は –

+0

とし、それらを合計して日付と時刻を取得します。DateSerial()+ TimeSerial()=特定の日付時刻。日付は長さが10進数なので、2つは一緒に= 2倍です。 –

+0

日付と時刻は数字で保持されます。 NumberFormatのために日付と時刻としてのみ表示されます。日付は1900年1月1日以降の日数として保持されます。時間はSecondsSinceMidnight/SecondsInDayとして保持されます。だから、日付は整数です。時間は分数です。それらは追加することができます。 –

答えて

1

このようなもの、多分??

? generate_timestamp("20161102","170522349")

02/11/2016 17:05:23.49

Function GENERATE_TIMESTAMP(strDate As String, strTime As String) As String 

Dim dtDate As Date 
Dim dtTime As Date 

dtDate = DateSerial(Mid(strDate, 1, 4), Mid(strDate, 5, 2), Mid(strDate, 8, 2)) 
dtTime = TimeSerial(Mid(strTime, 1, 2), Mid(strTime, 3, 2), Mid(strTime, 6, 2)) 

GENERATE_TIMESTAMP = FormatDateTime(dtDate, vbShortDate) & " " & _ 
         FormatDateTime(dtTime, vbLongTime) & "." & _ 
         Mid(strTime, 8, 2) 

End Function 
0

EDITを与える:テストはフォーマットが秒の端数を落とし、そしてちょうど画分を繰り返した見つけた後。私は解決するためにこの公式を考案しました。ここの数式はdatetimeのシリアル表現を出力せず、単なるテキスト文字列であることに注意してください。

=TEXT(DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2))+TIME(LEFT(B1,2),MID(B1,3,2),MID(B1,5,2)),"m/d/yyyy hh:mm:ss")&"."&RIGHT(B1,2) 

PREVIOUS応答:

あなたは次の式を使用してシリアルを作成することができます。

=DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2))+TIME(LEFT(B1,2),MID(B1,3,2),MID(B1,5,2))+(RIGHT(B1,2)/(24*60*60*100)) 

をそして、M/D/YYYY HHとカスタムとして、あなたのセルの書式を設定:mm:ssの。 ss。ここでは、秒数分の1秒をTIME()関数に渡すのではなく、むしろ1日の一部として追加します。

+0

実際にさらにテストすると、カスタムフォーマットで整数秒しか表示されないというエラーが表示されます。したがって、あなたの例では、 "23.49"ではなく "23.23"と表示されます。代わりの解決策について考えてみましょう。謝罪。 – nbayly

関連する問題