[[20210808184516]] 『VBA 週番号から日付』(ケンネ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA 週番号から日付』(ケンネ)

VBAで日付と週番号から週の始めと終わりの日付を求めたいです。
B1に月初めの日付、B2に週番号を入れます。
下記はエクセルでの関数になりますが、VBAで行なった場合のコードを教えていただきたいです。
よろしくお願いします。

=MAX(DATE(B1,1,1),DATE(B1,1,1)-WEEKDAY(DATE(B1,1,1),2)+(B2-1)*7+1)
=MIN(DATE(B1+1,1,0),DATE(B1,1,1)-WEEKDAY(DATE(B1,1,1),2)+B2*7)

< 使用 Excel:Excel2019、使用 OS:Windows10 >


 >下記はエクセルでの関数になりますが、

 B1に2020、B2に54とか入れられちゃったら、どうなるんですか?

 私がやってみたところでは以下になりますけど、OKですか?

 行  __B__  _C_  ______D______  _______E_______
  1   2020        2021/1/4(月)   2020/12/31(木)
  2     54                                     

 OKじゃなければ、どうなればいいんですか?

(半平太) 2021/08/08(日) 22:44


半平太さん
ありがとうございます。
上記でもOKです。
記載関数のVBAコードを知りたいです。
よろしくお願いします。
(ケンネ) 2021/08/09(月) 10:37

 >上記でもOKです

 そうなんですか・・
 結果をD1,E1に出す場合

 Sub getDatesByWeekNum()
    Dim B1, B2, NYday, NYeve

    B1 = Range("B1")
    B2 = Range("B2")

    NYday = DateSerial(B1, 1, 1)
    NYeve = DateSerial(B1 + 1, 1, 0)

    Range("D1") = Application.Max(NYday, NYday - Weekday(NYday, vbMonday) + (B2 - 1) * 7 + 1)
    Range("E1") = Application.Min(NYeve, NYday - Weekday(NYday, vbMonday) + B2 * 7)
 End Sub
(半平太) 2021/08/09(月) 11:23

半平太さん
無事に動きました。
大変助かりました。
ありがとうございました。
(ケンネ) 2021/08/09(月) 15:29

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.