2017-02-07 6 views
0

日付列と時刻列のデータを結合しようとしています。私は、次のコードを使用しています:日付の列と時刻の列を連結します

Sub Concat() 

Dim lRow As Long 
lRow = Range("A" & Rows.Count).End(xlUp).Row 

For i = 2 To lRow 
    Cells(i, 10) = Cells(i, 6) & " " & Cells(i, 7) 
    Cells(i, 11) = Cells(i, 8) & " " & Cells(i, 9) 
Next I 

Cells(1, 9).Copy 
Cells(1, 10).PasteSpecial Paste:=xlPasteFormats 
Cells(1, 11).PasteSpecial Paste:=xlPasteFormats 
Cells(1, 10) = "Request Time" 
Cells(1, 11) = "Validation Time" 

End Sub 

私が得る結果がこれです:

Input data: 
Creation_Date Creation Time  Change Date  Change Time Request Time     Validation Time 
01/23/2017  8:20:10   01/23/2017  8:20:10  1/23/2017 0.347337962962963  1/23/2017 0.347337962962963 

時間は、時間に戻って変換することはできません小数になります。連結機能の前に、日付列は日付用にフォーマットされ、時刻列は時刻用にフォーマットされる。

助けてください。

答えて

0

日付/時刻形式の基になるデータ型は、64ビット浮動小数点型の可能性が最も高いです。私は連結する前に値をStringに変換し、その後にdatetime形式を適用することをお勧めします。次のようにあなたのループを変更することができます

0

:もちろん

For i = 2 To lRow 
    Cells(i, 10) = Cells(i, 6) + Cells(i, 7) 
    Cells(i, 11) = Cells(i, 8) + Cells(i, 9) 
    Cells(i, 10).NumberFormat = "m/dd/yyyy h:mm:ss" 
    Cells(i, 11).NumberFormat = "m/dd/yyyy h:mm:ss" 
Next I 

をそれはあなたのために簡単だった場合は、列J & Kのフォーマットは、むしろコードに比べて、Excelで行うことができます。

重要なことは、日付と時刻を追加するだけで、値が結合された文字列を作成して作成しないことです。 (時刻8:20:10は8/24 + 20/24/60 + 10/24/60/60に等しい数値です。つまり、0.347337962962963です。その結果、結果の文字列は1/23/2017 0.347337962962963として作成されていました。文字列の場合、Excelは他のものとして扱うのに苦労します。)

関連する問題