今日がある月の何日目かを求めたい/任意の月の最終日を求めたい-Excel VBA Tips

Excel VBA Tips集-2

今日が該当月の何日目かを求める方法

Excel VBAにおいて、今日(本日)が該当月の何日目かを求めるにはDay(Now())と書きます。

Now関数は「2017/04/14 6:37:45」のように、「yyyy/mm/dd h:m:s」形式の日付を返します。

Day関数は日付から「日」を取得します。

従って、Day(Now())と書くことで、今日が今月の何日目かを取得できます。

また、Month(Now())と書くことで、本日時点の「月」を取得することができます。

尚、蛇足ではありますがYear(Now())と書くと、本日時点の「年」を取得できます。

下記のサンプルプログラムでは、例えば、4月1日~4月14日のブログへのアクセス数を、本日時点での4月の経過日数(=14日)で割ることで、今日時点での、1日あたりの平均アクセス数を算出しています。

[スポンサードリンク]

【サンプルプログラム実行前のExcel画面】

Day関数使用前のExcel画面

【サンプルプログラム】

【実行結果】

Day関数のサンプルプログラムの実行結果

任意の月の最終日を求める方法/任意の月が何日かを求める方法

[任意の月の最終日] = [任意の月の翌月の1日] – [1日]

Excel VBAでは、上記の式で、任意の月の最終日(=任意の月の日数)を取得することができます。

例えば、任意の月を4月だとすると、その翌月の1日、つまり5月1日の1日前は4月30日ですよね。

これをVBAのコードに変換すると、下記のようになります。

Day(DateSerial(Year(Now()), Month(Now()) + 1, 1) – 1)

DateSerial関数DateSerial(年, 月, 日)と指定することで、その年月日のシリアル値を返す関数です。

上記の例では、DateSerial(年, 月 + 1, 1)の部分で[任意の月の翌月の1日]を表しています。

従って、DateSerial(年, 月 + 1, 1) – 1は、
[任意の月の翌月の1日の前日]=[任意の月の最終日]を表しています。

故に、Day(DateSerial(年, 月 + 1, 1) – 1)は、「任意の月の日数(=最終日)」を意味します。

[スポンサードリンク]

任意の月に最終日を求めるサンプルプログラム

下記のサンプルプログラムでは、2017年03月11日を基準となる年月日に設定しています。その上で、3月の最終日(3月の日数)を求めています。

【実行結果】

任意の月の最終日を求めるサンプルプログラムの実行結果

関連項目

  • none

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA