Excel/VBA:日付の操作
日付関係ってよく使うのにすぐ忘れてしまうので忘備録として書き留めておきます。今回はVBA編です。
まずは基本形
Now()はよく使いますね。時刻を抜いた日付のみはDate、時刻のみはTime()となります。なぜかDateのみは()がありません。付けても自動で消えてしまいます。
Sub 日付基本() Range("A1") = Now() Range("A2") = Date Range("A3") = Time() End Sub
[ad#top-1]
日付の足算
日数の足し算は単純に1を足せば良いのですが、1か月後や1年後は各月の日数やうるう年の有無で足す日数が不明確です。そんな時はDateAddが便利です。以下は1年後を計算しています。
Sub 日付の足算() dt = Now() Range("A1") = dt '1年後 dt = DateAdd("yyyy", 1, dt) Range("A2") = dt End Sub
月末の日付を得る
月末を求めるにはDateSerial関数を使います。これはかなり便利です。
Sub 月末計算() dt = Now() '今月末 Range("A1") = DateSerial(Year(dt), Month(dt) + 1, 0) '前月末 Range("A2") = DateSerial(Year(dt), Month(dt), 0) '翌月末 Range("A3") = DateSerial(Year(dt), Month(dt) + 2, 0) End Sub
文字列から日付型に変換する
日付の文字列から日付型に変換する場合はDateValueを使います。ただ、この関数は微妙で「20170728」や「170728」という文字列は変換できません。以下の例では4行目でエラーが発生ます。
Sub 文字列から日付() Range("A1") = DateValue("2017/7/28") Range("A2") = DateValue("2017年7月28日") Range("A3") = DateValue("20170728") 'エラー!! End Sub
この通りエラー発生。「20170728」とか「170728」とかって一番使われるのですが、これが使えず残念です。
4行目をコメントアウトして実行すると以下の通りです。
[ad#ad-1]
スポンサーリンク