教えて!ExcelVBA!

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

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

f:id:m_kbou:20200527174002p:plain

DatePart関数は日付の指定した部分の値を抽出します。使い方について紹介します。

 

 

構文

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

DatePart(”[時間間隔の単位]”,[評価の対象となる日付])

[説明]:

DatePart関数は対象日付の指定した部分の値を抽出して返します。[時間間隔の単位]には時間間隔の引数を記述します。具体的には以下表のいずれかを記述し「”」(ダブルクォーテーション)で囲みます。[評価の対象となる日付]には起点となる日付を記述します。内容を纏めると、「[評価の対象となる日付]を起点に[時間間隔の単位]で指定した時間の間隔を数字で返して下さい。」との意味になります。

f:id:m_kbou:20200527162847p:plain

[記述例]:

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