教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 関数】DatePart関数で日付の指定した部分を抽出するにはどうすればいいの?使い方を教えて!

f:id:m_kbou:20200527174002p:plain

 

 

構文

記述方法は以下の通りとなります。

DatePart(”[指定時間単位]”,[対象日])

[説明]:

対象日に対して指定した時間単位の値を返します。

[指定時間単位] [対象日]から抽出したい時間の単位文字を記述します。
具体的には以下表の単位文字いずれかを記述します。
※「”」(ダブルクォーテーション)で囲みます。
[対象日] 任意の対象日を記述します。
単位文字 単位
yyyy
四半期
年間通算日
ww

[記述例]:

DatePart("yyyy", "2020/5/27")
DatePart("m", "2020/5/27")
DatePart("d", "2020/5/27")
DatePart("h", "2020/5/27 10:15:45")
DatePart("n", "2020/5/27 10:15:45")
DatePart("s", "2020/5/27 10:15:45")

 

使い方

使い方について具体的に説明します。

年の値を返す

評価対象となる日付に対し年の値を抽出する方法について説明します。

[プログラミング例]:

時間間隔の単位を表す文字に「yyyy」を記述します。

Sub サンプル()

  MsgBox DatePart("yyyy", "2020/5/27")

End Sub

内容は、「評価の対象日付:2020/5/27の年を抽出し、MsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20210423082951p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210423083005p:plain

②結果は以下の様に表示されます。年が2020年であるため、MsgBoxで「2020」が表示されます。

f:id:m_kbou:20210423083017p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

年の値を返す方法についての説明は以上です。

 

月の値を返す

評価対象となる日付に対し月の値を抽出する方法について説明します。

[プログラミング例]:

時間間隔の単位を表す文字に「m」を記述します。

Sub サンプル()

  MsgBox DatePart("m", "2020/5/27")

End Sub

内容は、「評価の対象日付:2020/5/27の月を抽出し、MsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20210423083125p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210423083137p:plain

②結果は以下の様に表示されます。月が5月であるため、MsgBoxで「5」が表示されます。

f:id:m_kbou:20210423083147p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

月の値を返す方法についての説明は以上です。

 

日の値を返す

評価対象となる日付に対し日の値を抽出する方法について説明します。

[プログラミング例]:

時間間隔の単位を表す文字に「d」を記述します。

Sub サンプル()

  MsgBox DatePart("d", "2020/5/27")

End Sub

内容は、「評価の対象日付:2020/5/27の日を抽出し、MsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20210423083247p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210423083259p:plain

②結果は以下の様に表示されます。日が27日であるため、MsgBoxで「27」が表示されます。

f:id:m_kbou:20210423083311p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

日の値を返す方法についての説明は以上です。

 

時間の値を返す

評価対象となる日付に対し時間の値を抽出する方法について説明します。

[プログラミング例]:

単位を表す文字に「h」を記述します。

Sub サンプル()

  MsgBox DatePart("h", "2020/5/27 10:15:45")

End Sub

内容は、「評価の対象日付:2020/5/27 10:15:45の時間を抽出し、MsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20210423083516p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210423083530p:plain

②結果は以下の様に表示されます。時間が10時であるため、MsgBoxで「10」が表示されます。

f:id:m_kbou:20210423083541p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

時間の値を返す方法についての説明は以上です。

 

分の値を返す

評価対象となる日付に対し分の値を抽出する方法について説明します。

[プログラミング例]:

時間間隔の単位を表す文字に「n」を記述します。(※「m」と間違えやすいので注意して下さい。)

Sub サンプル()

  MsgBox DatePart("n", "2020/5/27 10:15:45")

End Sub

内容は、「評価の対象日付:2020/5/27 10:15:45の分を抽出し、MsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20210423083641p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210423083655p:plain

②結果は以下の様に表示されます。分が15分であるため、MsgBoxで「15」が表示されます。

f:id:m_kbou:20210423083710p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

分の値を返す方法についての説明は以上です。

 

秒の値を返す

評価対象となる日付に対し秒の値を抽出する方法について説明します。

[プログラミング例]:

時間間隔の単位を表す文字に「s」を記述します。

Sub サンプル()

  MsgBox DatePart("s", "2020/5/27 10:15:45")

End Sub

内容は、「評価の対象日付:2020/5/27 10:15:45の秒を抽出し、MsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20210423083809p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210423083821p:plain

②結果は以下の様に表示されます。秒が45秒であるため、MsgBoxで「45」が表示されます。

f:id:m_kbou:20210423083833p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

秒の値を返す方法についての説明は以上です。

 

プログラミング(サンプル)

プログラミング事例を紹介します。

www.osiete-excelvba.work

 

おわりに

今回はDatePart関数の使い方について説明しました。類似の内容に本日が年初から数えて何週目にあたるかを調べる方法年間通算日を調べる方法があります。こちらも参考にして下さい。