特定の月に特定の平日がいくつ発生するのか疑問に思ったことはありませんか?一部の人々にとって、月にいくつの火曜日があるかを知ることは重要です。そして、特定の月に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は月曜日などです。

使用できるもう1つの優れた式は、次のとおりです。

=NETWORKDAYS.INTL(DATE(YEAR(A1),MONTH(A1),1),EOMONTH(A1,0), REPT("1",B1-1) & "0" & REPT("1",7-B1))

この一般化された式は、正しく機能するために2つの値のみを必要とします。 1つ目は、分析する月内の日付です。これはセルA1に入ります。セルB1に、カウントする曜日のインジケーターを配置する必要があります。この値は前の式とは異なりますが、1から7の範囲内である必要がありますが、1は月曜日、2は火曜日などです。

ワークシートのデザインで年、月、平日を異なるセルに入力できない場合、クリーンな解決策は、カウントを返すユーザー定義関数を作成することです。次のマクロは、このタイプの関数の例です。

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_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

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

このヒント(5684)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。

link月の平日