大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで日付から年月日と曜日を取得する方法についてご紹介します。日付から年だけを取得したいとか、曜日だけを取得したい、といった場合に参考になります。VBA関数のYear、Month、Day、WeekDay、Formatを使って年月日と曜日を取得します。

はじめに

この記事では、日付から年月日と曜日を取得する方法をご紹介します。

日付から年だけ取得したいとか、曜日だけ取得したい、といった場合に参考になります。

では説明していきます。

この記事で紹介すること

  • 日付から年、月、日を取得する方法
  • 日付から曜日を取得する方法

目次から見たい項目へ移動すると便利ですよ。

目次

ポイントとなるVBAコード

初めに、ポイントとなるVBAコードについて記載しておきます。

VBAコードだけ確認したい場合にどうぞ。

a = Year("2020/1/2") '年を取得
a = Month("2020/1/2") '月を取得
a = Day("2020/1/2") '日を取得
a = Weekday("2020/1/2") '曜日を数値で取得
a = WeekdayName(Weekday("2020/1/2")) '曜日を取得
a = Format("2020/1/2", "aaaa") '曜日を取得

では、解説していきます。

VBAで日付から年月日と曜日を取得する

日付型のデータから年月日や曜日を取得する方法をご紹介します。

取り出すデータは、『"yyyy/mm/dd"』のように日付であると認識できれば、年月日や曜日を取得することができます。

日付から『年』を取得(Year)

まず、日付から『年』を取得するのは『Year』でできます。

入力方法は、

『年 = Year(日付)』でできます。

やってみます。

日付『"2020/1/2"』から『年』を取得するVBAコードです。

Sub TEST1()
    
    a = "2020/1/2"
    
    b = Year(a) '年を取得
    
    MsgBox b
    
End Sub

実行します。

日付から年を取得

Yearで日付から年を取得した結果

結果は、『2020』で年が取得できました。

日付から『月』を取得(Month)

日付から『月』を取得するのは『Month』でできます。

入力方法は、

『月 = Month(日付)』でできます。

やってみます。

日付『"2020/1/2"』から『月』を取得するVBAコードです。

Sub TEST2()
    
    a = "2020/1/2"
    
    b = Month(a) '月を取得
    
    MsgBox b
    
End Sub

実行します。

日付から月を取得

Monthで日付から月を取得した結果

結果は、『1』で月が取得できました。

日付から『日』を取得(Day)

日付から『日』を取得するのは『Day』でできます。

入力方法は、

『日 = Day(日付)』でできます。

やってみます。

日付『"2020/1/2"』から『日』を取得するVBAコードです。

Sub TEST3()
    
    a = "2020/1/2"
    
    b = Day(a) '日を取得
    
    MsgBox b
    
End Sub

実行します。

日付から日を取得

Dayで日付から日を取得した結果

結果は、『2』で日が取得できました。

VBAで日付から曜日を取得する

日付から曜日を取得する方法について説明します。

取得する曜日のデータとして、大きく2つあって、曜日の数値と、曜日があります。

まずは、曜日の数値を取得する方法から説明していきます。

日付から『曜日』を数値で取得(WeekDay)

日付から『曜日を数値』で取得する方法です。『WeekDay』でできます。

使い方

変数の入力は次のようにします。

『曜日の数値 = WeekDay(日付)』

曜日の数値は、

  • 日曜日の場合:1
  • 月曜日の場合:2
  • 火曜日の場合:3
  • 水曜日の場合:4
  • 木曜日の場合:5
  • 金曜日の場合:6
  • 土曜日の場合:7

のように取得できます。

また、次のように引数を入れると週の初めを月曜日にすることができます。

『曜日の数値 = WeekDay(日付, vbMonday)』

曜日の数値は、

  • 月曜日の場合:1
  • 火曜日の場合:2
  • 水曜日の場合:3
  • 木曜日の場合:4
  • 金曜日の場合:5
  • 土曜日の場合:6
  • 日曜日の場合:7

となります。

次の例は、日付『"2020/1/2"』から曜日を数値で取得するVBAコードです。

Sub TEST4()
    
    a = "2020/1/2"
    
    b = Weekday(a) '曜日を数値で取得
    
    MsgBox b
    
End Sub

実行してみます。

日付から曜日を数値で取得

WeekDayで日付から曜日を数値で取得した結果

結果は、『5』つまり木曜日になります。

『2020/1/2』は木曜日ですので、正しく曜日を取得できています。

数値で曜日を取得するメリットは比較ができる点です。

例えば木曜日以降かを判定する場合は、『If WeekDay(日付) >=5 Then』と入力すれば判定ができます。

いや、数値ではなくて、曜日を取得したい、といった場合は次の方法があります。

日付から『曜日』を取得(WeekDayName)

日付から曜日を取得する方法として、『WeekDayName』を使うという方法があります。

日付『"2020/1/2"』から曜日を取得するVBAコードです。

Sub TEST5()
    
    a = "2020/1/2"
    
    b = WeekdayName(Weekday(a)) '曜日を取得
    
    MsgBox b
    
End Sub

実行してみます。

日付から曜日を取得

WeekDayNameを使って日付から曜日を取得した結果

結果は、『木曜日』となりました。

WeekDayNameの使い方は次のようになります。

使い方

使い方は、WeekDayNameに次のように入力します。

『曜日 = WeekDayName(数値)』

結果は、

  • 数値が1の場合:日曜日
  • 数値が2の場合:月曜日
  • 数値が3の場合:火曜日
  • 数値が4の場合:水曜日
  • 数値が5の場合:木曜日
  • 数値が6の場合:金曜日
  • 数値が7の場合:土曜日

というように取得できます。

週の初めを変更することもできます。

週の初めを月曜日に変更する場合は、次のように入力します。

『曜日 = WeekDayName(数値, , vbMonday)』

結果は、

  • 数値が1の場合:月曜日
  • 数値が2の場合:火曜日
  • 数値が3の場合:水曜日
  • 数値が4の場合:木曜日
  • 数値が5の場合:金曜日
  • 数値が6の場合:土曜日
  • 数値が7の場合:日曜日

というように取得できます。

このWeedDayNameは覚えるの面倒なので、次のFormatの方が簡単です。

日付から『曜日』を取得(Format)

日付から『曜日』を取得する方法です。『Format』に『"aaaa"』と入力するとできます。

日付『"2020/1/2"』から曜日を取得するVBAコードです。

Sub TEST6()
    
    a = "2020/1/2"
    
    b = Format(a, "aaaa") '曜日を取得
    
    MsgBox b
    
End Sub

実行してみます。

日付から曜日を取得

Formatで日付から曜日を取得した結果

結果は、『木曜日』となりました。

ちなみに、Formatに『"aaa"』と入力すると『木』と短縮された曜日が取得できます。

曜日の取得についてまとめると、日付から曜日を数値で取得する場合は、WeekDayを使います。

日付から曜日を取得する方法として、2つあって、WeekDayNameとFormatです。

日付から曜日を取得する際は、『Format』を使った方が楽です。

VBAで年月日からDateSerialで日付に変換

VBAで年月日から日付に変換する方法を紹介します。DateSerialで日付に変換できます。

先ほどは、日付から年、月、日を取得する方法でした。

この分解した日付を、再度、日付に変換したいという場合もあると思いますので、併せてご紹介しておきます。

使い方

使い方は、DateSerialに次のように入力します。

『日付 = DateSerial(年, 月, 日)』

これで、日付のデータに戻すことができます。

やってみます。

年月日から日付に変換

年月日でそれぞれ『2020』、『1』、『2』を日付に変換するVBAコードです。

Sub TEST7()
    
    a = DateSerial(2020, 1, 2) '年月日から日付を取得
    
    MsgBox a
    
End Sub

実行してみます。

年月日から日付に変換

DateSerialを使って年月日から日付に変換した結果

結果は、『2020/01/02』と日付に変換されました。

日付から年月日を取得して、再度日付に変換したい場合は『DateSerial』を使いましょう。

実用例

日付から年、月、日、曜日を取得するVBAコードの実用例を2つ紹介します。

InputBoxの日付から年月日と曜日を取得してセルに入力する

InputBoxに入力した日付から年月日と曜日を取得して、セルに入力するVBAコードです。

Sub TEST8()
    
    a = InputBox("日付を入力してください")
    
    With ActiveSheet
        .Cells(2, 1) = Year(a) '年をセルに入力
        .Cells(2, 2) = Month(a) '月をセルに入力
        .Cells(2, 3) = Day(a) '日をセルに入寮
        .Cells(2, 4) = Format(a, "aaaa") '曜日をセルに入力
    End With
    
End Sub

では、実行してみます。

Inputに日付を入力

InputBoxが表示されるので日付を入力する

日付を入力します。

年月日と曜日をセルに入力

日付から年月日と曜日を取得して、セルに入力した結果

セルに、年月日と曜日を入力できました。

今日の日付から年月日を取得する

今日の日付から年月日と曜日を取得するとかもできます。

Sub TEST9()
    
    a = Now
    b = Year(a) '今日の日付から年を取得
    c = Month(a) '今日の日付から月を取得
    d = Day(a) '今日の日付から日を取得
    e = Format(a, "aaaa") '今日の日付から曜日を取得
    
    MsgBox b & vbLf & c & vbLf & d & vbLf & e
    
End Sub

実行してみます。

今日の日付から年月日と曜日を取得

今日の日付から年月日と曜日を取得した結果

今日の日付から年月日と曜日を取得できました。

おわりに

この記事では、日付から年月日と曜日を取得する方法をご紹介しました。

年月日は、それぞれYear、Month、Dayで取得できます。英語をそのまま入力すれば取得できますので簡単です。

日付から曜日を取得する場合は、Formatが簡単です。

参考になればと思います。最後までご覧くださいましてありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す