エクセルVBAで平日
以下は、我々は2つの日付の間の平日の数を計算エクセルVBAでプログラムを見ていきます。
平日は以下のとおりです。月曜日、火曜日、水曜日、木曜日と金曜日。
状況:
注:日付は米国のフォーマットです。最初の月、日セカンド。フォーマットのこのタイプは、あなたの窓地域の設定に依存します。
1.まず、我々は5つの変数を宣言します。 Date型、Date型の日付2、Date型のdateToCheck、Integer型のdaysBetween、Integer型のInteger型と私の平日の日付1。
Dim date1 As Date, date2 As Date, dateToCheck As Date Dim daysBetween As Integer, weekdays As Integer, i As Integer
2.私たちは、4つの変数を初期化します。私たちは、変数daysBetweenを初期化するために、DateDiff関数を使用します。この関数は3つの引数を持っています。
我々は日付1とdate2の間の日数をしたいので、私たちは、最初の引数に「D」に記入します。
weekdays = 0 date1 = Range("B2") date2 = Range("B3") daysBetween = DateDiff("d", date1, date2)
3.私たちは、日が平日であるかどうか(日付1と日付2を含む)日付1とdate2の間の各日付をチェックする必要があります。はい、私たちは1で平日をインクリメントした場合私たちは、次のループのために使用されます。
For i = 0 To daysBetween
4.私たちは、私たちがチェックする必要があり、それぞれの日付を取得するにはDateAdd関数を使用します。この関数は3つの引数を持っています。私たちは日を追加したいので、私たちは、私は2番目の引数、と我々は日付1にI日間追加したいので、第三引数の日付1のために、最初の引数に「D」に記入します。この方法でExcelのVBAは、日付1とdate2の日付1から始まるとの間にそれぞれの日付を確認することができます。次のコード行を追加します。
dateToCheck = DateAdd("d", i, date1)
例:私は3、エクセルVBAチェックがDATE1 + 3日間=のために。
5.次に、我々はdateToCheckが平日であるかどうかをチェックするためにWeekday関数(関数内のビルド)を使用します。 Weekday関数は、土曜日に日曜日のための1と7を返します。平日(dateToCheck)が1に等しくない(<>手段と等しくない)7に等しくない場合したがって、我々は唯一の変数平日をインクリメント。次のコード行は、仕事を得ます。
If (Weekday(dateToCheck) <> 1 And Weekday(dateToCheck) <> 7) Then weekdays = weekdays + 1 End If
6.ループを閉じることを忘れないでください。
Next i
7.最後に、メッセージボックスを使用して平日の数を表示します。我々は2つの文字列(参加)CONCATENATEに&演算子を使用します。平日ものの、それはここで働くの文字列ではありません。
MsgBox weekdays & " weekdays between these two dates"
8.あなたのコマンドボタンでのマクロと、それをテストします。
結果: