大体でIT

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

大体でIT

Excel VBAで、指定した日付が月の「何週目か」を取得したい場合は、「DateDiff」を使うとできます。手順は、「1日」との週の差分を取得して、「1週」を足すという感じです。「月曜始まり」の場合は、引数に「vbMonday」を入力するとできます。日付の操作についてマスターしていきましょう。

はじめに

この記事では、指定した日付が、「月の何週目か」を取得する方法について、ご紹介します。

やり方としては、「DateDiff」を使って、指定した年月の「1日」との週の差分を取得して、「1週」を足す、という流れになります。

「月曜始まり」の場合は、「DateDiff」の第3引数に、「vbMonday」を入力することで、月の何週目かを取得することができます。

「DateDiff」をうまく使って、日付の操作についてマスターしていきましょう。

では、指定した日付が「月の何週目か」を取得する方法について、解説していきます。

この記事を読むメリット

  • 指定した日付が「月の何週目か」を取得できるようになります。

本記事の内容を動画でまとめています

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

目次

何週目かを取得する

指定した日付が、月の何週目かを取得してみます。

「日曜始まり」と「月曜始まり」で、何週目かが変わりますので、それぞれ解説していきます。

日曜日始まりの場合

まずは、日曜日始まりの場合で、月の何週目かを取得してみます。

手順としては、次のようになります。

  • 指定した年月の「1日」との差分の週を取得
  • 取得した週に「1週」を足す

という感じです。

VBAコードは、次のようになります。

Sub TEST1()
  
  Dim A
  A = "2022/1/16"
  B = DateSerial(Year(A), Month(A), 1) '指定年月の1日を取得
  
  '何週目かを取得
  Debug.Print DateDiff("ww", B, A) + 1
  
End Sub

「DateDiff」の使い方について、詳細はこちらでまとめています。

では、VBAコードを実行してみます。

日曜始まりで、何週目かを取得

日曜始まりの場合、「2022/1/16」は、「4週目」となります。

日曜始まりの場合、「2022/1/16」は、「4週目」となります

カレンダーで「2022/1/16」が何週目かを確認してみます。

カレンダーで「2022/1/16」が何週目かを確認してみます

正しく何週目かを取得できています。

何週目かを取得するイメージとしては、次のようになります。

取得するイメージ

指定年月の1日との差分の週を取得して、1週を足すと、月の何週目かを取得できます

指定年月の1日との差分の週を取得して、1週を足すと、月の何週目かを取得するという感じです。

月曜始まりの場合

次は、月曜始まりの場合で、月の何週目かを取得してみます。

手順は先ほどと同じで、次のようになります。

  • 指定した年月の「1日」との差分の週を取得
  • 取得した週に「1週」を足す

先ほどと違うのが、「DateDiff」の第3引数に、「vbMonday」を入力するというところです。

Sub TEST2()
  
  Dim A
  A = "2022/1/16"
  B = DateSerial(Year(A), Month(A), 1) '指定年月の1日を取得
  
  '何週目かを取得
  Debug.Print DateDiff("ww", B, A, vbMonday) + 1
  
End Sub

では、VBAコードを実行してみます。

月曜始まりで、何週目かを取得

月曜始まりの場合、「2022/1/16」は、「3週目」となります。

月曜始まりの場合、「2022/1/16」は、「3週目」となります

カレンダーで「2022/1/16」が何週目かを確認してみます。

カレンダーで「2022/1/16」が何週目かを確認してみます

正しく、月の何週目かを取得できています。

取得するイメージは、次のようになります。

取得するイメージ

指定年月の1日との差分の週を取得して、1週を足すと、月の何週目かを取得できます

指定年月の1日との差分の週を取得して、1週を足すと、月の何週目かを取得するという感じです。

こんな感じで、「DateDiff」を使えば、何週目かを取得することができます。

カレンダーの位置を取得する

「DateDiff」を使って、何週目かを取得することができれば、カレンダーの位置を取得することができます。

「日曜始まり」と「月曜始まり」でやってみます。

日曜始まりの場合

日曜始まりの場合で、指定した日付のカレンダーの位置を取得してみます。

手順としては、次のようになります。

  • 指定した日付が月の何週目かを取得
  • 指定した日付が週の何日目かを取得

VBAコードは、こんな感じです。

Sub TEST3()
  
  Dim A, B, C
  A = "2022/1/16"
  
  '月の何週目かを取得
  B = DateDiff("ww", DateSerial(Year(A), Month(A), 1), A) + 1
  '週の何日目かを取得
  C = Weekday(A)
  'カレンダーの位置を取得
  Cells(B, C).Offset(3, 1).Select
  
End Sub

では、VBAコードを実行してみます。

日曜始まりのカレンダーで、日付の位置を取得できた

日曜始まりのカレンダーで、指定した日付の位置を取得できました

日曜始まりのカレンダーで、指定した日付の位置を取得できました。

月曜始まりの場合

次は、月曜始まりの場合で、指定した日付のカレンダーの位置を取得してみます。

手順は先ほどと同じで、次のようになります。

  • 指定した日付が月の何週目かを取得
  • 指定した日付が週の何日目かを取得

先ほどと違う点は、「DateDiff」の第3引数と「Weekday」の第2引数に、「vbMonday」を入力するというところになります。

Sub TEST4()
  
  Dim A, B, C
  A = "2022/1/16"
  
  '月の何週目かを取得
  B = DateDiff("ww", DateSerial(Year(A), Month(A), 1), A, vbMonday) + 1
  '週の何日目かを取得
  C = Weekday(A, vbMonday)
  'カレンダーの位置を取得
  Cells(B, C).Offset(3, 1).Select
  
End Sub

では、VBAコードを実行してみます。

月曜始まりのカレンダーで、日付の位置を取得できた

月曜始まりのカレンダーで、指定した日付の位置を取得できました

月曜始まりのカレンダーで、指定した日付の位置を取得できました。

おわりに

この記事では、指定した日付が、「月の何週目か」を取得する方法について、ご紹介しました。

やり方としては、「DateDiff」を使って、指定した年月の「1日」との週の差分を取得して、「1週」を足す、という流れになります。

「月曜始まり」の場合は、「DateDiff」の第3引数に、「vbMonday」を入力することで、月の何週目かを取得することができます。

「DateDiff」をうまく使って、日付の操作についてマスターしていきましょう。

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

関連する記事から探す

カテゴリから探す

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

サイト内を検索する

↓キーワードを入力する

アーカイブから探す