Excel VBA。年・月・日に分割されているので、日付を手早くつくりたい。
<VBA: DateSerial関数>
データを読み込むと、次のように、年月日がそれぞれ別の列になっていました。
作業上、不便なので、日付をつくりたいわけですね。
DATE関数をつかえば、簡単にD列に日付を設定することができますが、データを読み込んだ後に、自動的に日付を作るようにできれば、さらに作業効率が改善できるというわけですね。
そこで、Excel VBAをつかってD列に日付を設定するプログラム文をつくってみます。
Sub 日付作成()
Dim i As Long
Dim lastrow As Long
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
For i = 2 To lastrow
Cells(i, "d") = DateSerial(Cells(i, "a"), Cells(i, "b"), Cells(i, "c"))
Next
End Sub
とりあえず、実行してみます。
D列に日付が設定されてました。
プログラム文を確認しておきましょう。
まずはお馴染みの変数宣言ですね。
Dim i As Long
このあとFor~Next文で繰り返しのカウントでつかいます。
Dim lastrow As Long
For~Next文で何回繰り返し処理をすればいいのかを指示するために、データの最終行のセル番号をいれるための変数です。
その最終行の行数を算出するのが次の処理です。
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
ここからがメインの処理です。
For i = 2 To lastrow
Cells(i, "d") = DateSerial(Cells(i, "a"), Cells(i, "b"), Cells(i, "c"))
Next
D列に日付を表示するための処理
DateSerial(Cells(i, "a"), Cells(i, "b"), Cells(i, "c"))
ここで注意するのは、「Date」ではなくて「DateSerial」ということですね。
Cells(i, "d") = Date(Cells(i, "a"), Cells(i, "b"), Cells(i, "c"))
とすると、コンパイルエラーが表示されます。
このDateは、次のように設定します。
Cells(i, "d") = Date()
ただ、これは、今日の日付を設定するときつかいます。
Accessと同じというわけですね。
要するに、
ExcelのDATE関数と同じように、Excel VBAでつかうには、「DateSerial関数」を使用します。
ExcelのTODAY関数と同じように、Excel VBAでつかうには、「Date関数」を使用します。
そのため、「DateSerial関数」を使用する必要がありますので、注意が必要ですね。