特定の月に特定の平日がいくつ発生するのか疑問に思ったことはありませんか?

一部の人々にとって、月にいくつの火曜日があるかを知ることは重要です。そして、特定の月に4つまたは5つの土曜日があるかどうかを知りたくない人はいますか?

Excelには、特定の平日が特定の月に発生する回数を判別するために使用できる組み込み関数は含まれていません。ただし、タスクを実行するために独自の数式や関数を作成することはできます。

まず、次の式を考えます。

=4+N((WEEKDAY(DATE(YEAR($A$1),MONTH($A$1),1)))



(DAY(DATE(YEAR($A$1),MONTH($A$1)+1,0))-28)>(7*(( WEEKDAY(DATE(YEAR($A$1),MONTH($A$1),1)))>(1+ROW()- ROW($A$2)))+(1+ROW()-ROW($A$2))))

式はA1の日付に依存しています。この日付は、「テスト」する月からのものである必要があります。数式は、行2のセルにコピーしてから、そのすぐ下の6つのセルにコピーすることを目的としています。たとえば、この数式をセルB2:B8の範囲にコピーできます。最初の応答(B2)はその月の日曜日の数であり、2番目の応答(B3)は月曜日の数です。

この数式の欠点は、数式を含むセルの位置を数式の一部として使用することです。これは、数式を2行目から始まる場所に配置する必要があることを意味します。

もう1つの欠点は、式が非常に長く複雑なことです。より短い数式が必要な場合は、配列数式を使用する必要があります。使用できる便利な数式の1つは、年(セルC2)、月(セルD2)、および平日(セルE2)の3つの引数を指定することを前提としています。これらの3つの項目を使用すると、次の式がうまく機能します。

=SUM(IF(WEEKDAY(DATE(C2, D2, ROW(INDIRECT("1:" & DAY(DATE(C2, D2+1, 0))))))=E2, 1, 0))

これは配列数式であることに注意してください。つまり、Shift + Ctrl + Enterを押して入力する必要があります。さらに、セルE2に入力する曜日の値は、1から7の範囲である必要があります。ここで、1は日曜日、2は月曜日などです。

別のアプローチ(配列数式に依存しないアプローチ)は、E2で指定されているように、セルA1の日付を希望する平日についてテストすることです。

(ここでも、前の例のように1から7の値です。)

=IF(MONTH(DATE(YEAR(A1),MONTH(A1),1)-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1)-E2)+35)=MONTH(A1),5,4)

数式は基本的に、チェックしている平日の月に5番目のインスタンスがあるかどうかをチェックします。ある場合は、値5が返されます。そうでない場合は、値4が返されます。 (この式は、特定の平日のインスタンスが4つまたは5つしかないことを正しく想定しています。これより少なくなることも、多くなることもありません。)

マクロベースのソリューションも利用できます。そのような解決策の1つは次のとおりです。

Function MonthWeekDays(dDate As Date, iWeekDay As Integer)

Dim dLoop As Date     If iWeekDay < 1 Or iWeekDay > 7 Then         MonthWeekDays = CVErr(xlErrNum)

Exit Function     End If     MonthWeekDays = 0     dLoop = DateSerial(Year(dDate), Month(dDate), 1)

Do While Month(dLoop) = Month(dDate)

If WeekDay(dLoop) = iWeekDay Then _             MonthWeekDays = MonthWeekDays + 1         dLoop = dLoop + 1     Loop End Function

この関数を使用するには、セルに次のように入力します。

=MonthWeekDays(A1,4)

この使用法では、最初の引数(セルA1)には、評価される月の日付が含まれます。 2番目の引数は、カウントする曜日を表す数値です。この値は1から7の範囲である必要があります。ここで、1は日曜日、2は月曜日などです。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(2183)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。

link:/ excelribbon-Weekdays_in_a_Month [月の平日]