教えて!ExcelVBA!

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

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

       f:id:m_kbou:20200527174002p:plain

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

 

【目次】

 

構文

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")

 

使い方

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

年の値を返す

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

[記述例]:

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

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

-------------------------------------------------

Sub サンプル()
    MsgBox DatePart("yyyy", "2020/5/27")
End Sub

-------------------------------------------------

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

[実行例]:

結果は、年が2020年であるため「2020」が表示されます。

f:id:m_kbou:20200527174026p:plain

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

 

月の値を返す

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

[記述例]:

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

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

-------------------------------------------------

Sub サンプル()
    MsgBox DatePart("m", "2020/5/27")
End Sub

-------------------------------------------------

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

[実行例]:

結果は、月が5月であるため「5」が表示されます。

f:id:m_kbou:20200527174041p:plain

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

 

日の値を返す

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

[記述例]:

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

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

-------------------------------------------------

Sub サンプル()
    MsgBox DatePart("d", "2020/5/27")
End Sub

-------------------------------------------------

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

[実行例]:

結果は、日が27日であるため「27」が表示されます。

f:id:m_kbou:20200527174055p:plain

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

 

時間の値を返す

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

[記述例]:

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

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

-------------------------------------------------

Sub サンプル()
    MsgBox DatePart("h", "2020/5/27 10:15:45")
End Sub

-------------------------------------------------

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

[実行例]:

結果は、時間が10時であるため「10」が表示されます。

f:id:m_kbou:20200527174111p:plain

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

 

分の値を返す

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

[記述例]:

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

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

-------------------------------------------------

Sub サンプル()
    MsgBox DatePart("n", "2020/5/27 10:15:45")
End Sub

-------------------------------------------------

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

[実行例]:

結果は、分が15分であるため「15」が表示されます。

f:id:m_kbou:20200527174122p:plain

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

 

秒の値を返す

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

[記述例]:

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

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

-------------------------------------------------

Sub サンプル()
    MsgBox DatePart("s", "2020/5/27 10:15:45")
End Sub

-------------------------------------------------

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

[実行例]:

結果は、秒が45秒であるため「45」が表示されます。

f:id:m_kbou:20200527174135p:plain

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

 

おわりに

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