「今週って第何週?」週報作成の迷いを解消するVBA DatePart関数の使い方【一括処理コード付】

【業務効率化】VBA
スポンサーリンク

こんにちは!ぐーです。
毎週金曜日の夕方に「週報」を作成している方は多いのではないでしょうか?

その際に意外とストレスを感じるのが、「今週が第何週目なのか」を確認する作業です。

1日が水曜日だから、今週は第2週かな? それとも第3週?」と迷い、わざわざカレンダーを確認するのは手間がかかります。

その確認時間は、VBA(マクロ)を活用すれば「0秒」にできます。

今回は、日付から週番号を一瞬で算出するDatePart関数と、実務で役立つ一括処理マクロをご紹介します。

【業務効率化】VBAの記事を見る 

1. カレンダー不要! DatePart関数とは?

DatePart関数は、その名の通り「Date(日付)」の「Part(一部)」を取り出すための命令です。

「年」や「月」だけでなく、「年間の通算週(第何週)」を一発で計算できるのが最大の特徴です。

書き方はとてもシンプルです。

DatePart(“ww”, 日付)

“ww”は週(Week)を指す引数です。 これだけで、パソコンが正確な週番号を教えてくれます。

2. 【基本】今日が第何週かを知るコード

まずは、「今日が第何週か」をポップアップで教えてくれるシンプルなコードです。

Sub CheckThisWeek()
    ' 今日の日付をもとに、第何週かを表示する
    Dim weekNum As Integer
   
    ' Dateは「今日」を表します
    weekNum = DatePart("ww", Date)
   
    MsgBox "今日は、今年の第 " & weekNum & " 週目です!"
End Sub

これを実行するだけで、今日の日付に応じた週番号が表示されます。もうカレンダーを数える必要はなくなります。

3. 【応用】データリストに一括で「第◯週」を振るコード

実務においては、1件だけでなく、表にある大量の日付に対して一括で週番号を振りたい場面がほとんどかと思います。手入力なら10分かかる作業も、このコードなら1秒です。 

想定するシートの状態:

  • A列: 日付が入っている(2行目からデータ開始)
  • B列: 空欄(ここに週番号を出力します)

コピペ用:リスト一括処理コード

Sub AddWeekNumbersToList()
    Dim i As Long
    Dim lastRow As Long
   
    ' 画面の更新を一時停止(処理速度アップのため)
    Application.ScreenUpdating = False

    ' A列(1列目)のデータが入っている最後の行数を自動で探す
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
   
    ' 2行目からデータがある最後の行まで繰り返す
    For i = 2 To lastRow
       
        ' もしA列のセルが「日付」だったら処理する
        If IsDate(Cells(i, 1).Value) Then
           
            ' B列(2列目)に週番号を書き込む
            ' vbSunday:日曜始まり / vbFirstJan1:1月1日を第1週とする
            Cells(i, 2).Value = DatePart("ww", Cells(i, 1).Value, vbSunday, vbFirstJan1)
           
        Else
            ' 日付じゃない場合は空白にしておく
            Cells(i, 2).Value = ""
        End If
       
    Next i
   
    ' 画面の更新を再開
    Application.ScreenUpdating = True
   
    MsgBox "完了!すべての行に週番号を振りました。", vbInformation
End Sub

ポイント:定義のズレを防ぐ

上記のコードには、vbFirstJan1という設定を入れています。

実は「第1週」の定義には、「1月1日を含む週」や「最初の完全な7日間」など、複数のルールが存在します。

ここを正しく設定しないと、社内の基準と1週間ズレてしまう可能性があります。

日本の多くの企業では「1月1日を含む週を第1週」とすることが多いため、この設定を明記することでミスを防いでいます。

まとめ

たかが「週番号」、されど「週番号」。

毎回カレンダーを見て数える「30秒」や、入力ミスの不安を「ゼロ」にすることは、立派なITスキルです。

まずは上記のコードをコピペして、自分のパソコンで動かしてみてください。

【業務効率化】VBAの記事を見る 


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました