日付と時刻の結合はDATE関数とTIME関数を+でつなぐと簡単

セルにばらばらに入力してある日付と時刻を結合し1つのセルに入力する方法です。

B列~G列に分かれて入力されている値を結合し、A列に入力する例です。

日付の結合

エクセルの関数で簡単に結合できますが、参考にVBAの例も記載します。

参考:配列の基本

目次

DATE関数とTIME関数を+で結合する

2つの関数を使う方法です。

  • TIME関数
  • TEXT関数

設定する関数

(1)セルA2に次の関数を入力します。

DATE関数とTIME関数
=DATE(B2,C2,D2) + TIME(E2,F2,G2)

(2)セルA3以降に式をコピーします。

(3)セルの書式設定で表示形式を変更します。

この場合は、 「yyyy/mm/dd hh:mm:ss」 をユーザー定義で設定します。

セルの書式

関数ごとの結果

DATE関数

DATE関数
=DATE(B2,C2,D2)

TIME関数

TIME関数
=DATE(B2,C2,D2)

DATE関数 とTIME関数 を&で結合した結果

2つを結合した結果は「441980.395891203703704」です。

DATE関数 ・ TIME関数
=DATE(B2,C2,D2) & TIME(E2,F2,G2)

この状態から「yyyy/mm/dd hh:mm:ss」と表示したい場合は、TEXT関数を使えば可能です。

  • DATE関数
  • TIME関数
  • TEXT関数
関数
=TEXT(DATE(B2,C2,D2),"yyyy/mm/dd") & " "&TEXT(TIME(E2,F2,G2),"hh:mm:ss")

式が長くなります。

単純にDATE関数とTIME関数を「+」で結合した方が簡単だということがわかります。

VBAで結合する

For…Next ステートメントの例です。

単純な文字結合です。

Sub sumple1()
    Dim i As Long   
    For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row
            Cells(i, 1) = Cells(i, 2) & "/" & Cells(i, 3) & "/" & Cells(i, 4) & " " & Cells(i, 5) & ":" & Cells(i, 6) & ":" & Cells(i, 7)
    Next i
End Sub

2次元配列の例です。

Sub sumple2()
    Dim Arry1 As Variant: Arry1 = Range("A1").CurrentRegion
    Dim r As Long, c As Long    
    For r = 2 To UBound(Arry1)
        For c = LBound(Arry1, 2) To UBound(Arry1, 2)
            Cells(r, 1) = Arry1(r, 2) & "/" & Arry1(r, 3) & "/" & Arry1(r, 4) & " " & Arry1(r, 5) & ":" & Arry1(r, 6) & ":" & Arry1(r, 7)
        Next c
    Next r
End Sub
目次