ダンは会社で使用するワークシートを設定しており、http://calendarcorner.net/ [calendar]月の最初の営業日を計算する方法が必要です。彼は月の最初の日を計算する方法を知っていますが、その日は週末や休日になる可能性があります。

特定の月の最初の平日を計算する方法はいくつかあります。次の式から始めるとよいでしょう:

=DATE(YEAR(A1),MONTH(A1),1)+CHOOSE(WEEKDAY(DATE(YEAR(A1),MONTH(A1),1)),1,0,0,0,0,0,2)

この数式は、セルA1にある日付の月の最初の平日が必要であることを前提としています。したがって、セルA1の日付が2011年3月26日の場合、数式では2011年3月の最初の平日が必要であると想定しています。

システムにAnalysisToolPakがインストールされている場合、式ははるかに単純になります。

=WORKDAY(EOMONTH(A1,-1), 1)

EOMONTH関数は、セルA1の日付の前の月の最終日を返し、WORKDAY関数は翌月の最初の平日を返します。 WORKDAYは少し風変わりなので、この関数は(EOMONTHを使用して)このようにまとめられています。最初のパラメーターが有効な稼働日であると想定しています。これは、パラメーターで使用されている日付が月曜日から金曜日の稼働週に該当するかどうかをチェックしないことを意味します。最初の就業日を決定する月の前日にパラメーターを強制し、2番目のパラメーターを1に設定することにより、関数は目的の月の最初の実際の平日を返します。

WORKDAY関数を使用すると、オプションで休日を考慮するように指定することもできます。これを行う最も簡単な方法は、セル範囲に休日の日付のリストを設定し、その範囲に名前を付けることです。 (範囲に名前を付ける方法については、_ExcelTips_の他の問題で説明されています。)範囲にMyHolidaysなどの名前を付けると、次のバージョンの数式を使用できます。

=WORKDAY(EOMONTH(A1,-1), 1, MyHolidays)

1年の特定の月の開始就業日を計算する場合は、これが巧妙なトリックです。セルA1に2011などの年が含まれ、セルA2に月番号1から12が含まれていると仮定します。これは、就業日を開始する月を表します。次に、次の式を使用して、目的の日付を取得できます。

=WORKDAY(DATE(A1,1,0), A2, MyHolidays)

この数式でDATE関数を使用する方法は、セルA1で指定された年の前の年の最後の日を返します。次に、A2の値を使用してその月数を進め、MyHolidays(以前と同様)はその月に発生する可能性のある休日を考慮します。

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

このヒント(10199)は、Microsoft Excel 97、2000、2002、および2003に適用されます。

Excel(Excel 2007以降)のリボンインターフェイスに関するこのヒントのバージョンは、次の場所にあります: