セルにばらばらに入力してある日付と時刻を結合し1つのセルに入力する方法です。
B列~G列に分かれて入力されている値を結合し、A列に入力する例です。
エクセルの関数で簡単に結合できますが、参考にVBAの例も記載します。
参考:配列の基本
目次
DATE関数とTIME関数を+で結合する
2つの関数を使う方法です。
- TIME関数
- TEXT関数
設定する関数
(1)セルA2に次の関数を入力します。
=DATE(B2,C2,D2) + TIME(E2,F2,G2)
(2)セルA3以降に式をコピーします。
(3)セルの書式設定で表示形式を変更します。
この場合は、 「yyyy/mm/dd hh:mm:ss」 をユーザー定義で設定します。
関数ごとの結果
DATE関数
=DATE(B2,C2,D2)
TIME関数
=DATE(B2,C2,D2)
DATE関数 とTIME関数 を&で結合した結果
2つを結合した結果は「441980.395891203703704」です。
=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