Christineは、特定の月の最初の火曜日を計算する方法を必要としています。

したがって、月と年を考えると、彼女はその最初の火曜日の日付を取得する必要があります。

目的の結果を達成するために使用できるさまざまな数式がかなりあります。ほとんどのアプローチでは、特定の日付の曜日を表す数値を返すことができるため、何らかの方法でWEEKDAY関数を使用します。セルA1(1から12)に月を入力し、セルA2に4桁の年を入力すると、次の数式はすべて、その月の最初の火曜日の日付を返します。 (式を長さの長いものから短いものの順に並べました。)

=DATE(A2,A1,1)+IF(WEEKDAY(DATE(A2,A1,1))=3,0,IF(WEEKDAY(DATE(A2,A1,1))>3,7-WEEKDAY(DATE(A2,A1,1))+3,3-WEEKDAY(DATE(A2,A1,1))))

=IF(3-WEEKDAY(DATE(A2,A1,1))>=0,DATE(A2,A1,1)+3-WEEKDAY(DATE(A2,A1,1)),DATE(A2,A1,1)+7+3-WEEKDAY(DATE(A2,A1,1)))

=DATE(A2,A1,1)+IF(3-WEEKDAY(DATE(A2,A1,1))>=0,3-WEEKDAY(DATE(A2,A1,1)),10-WEEKDAY(DATE(A2,A1,1)))

=DATE(A2,A1,1)-WEEKDAY(DATE(A2,A1,1),1)+3+IF(WEEKDAY(DATE(A2,A1,1),1)>3,7,0)

=DATE(A2,A1,1)+8-DAY(DATE(A2,A1,1))-WEEKDAY(DATE(A2,A1,1)-DAY(DATE(A2,A1,1))-2)

=DATE(A2,A1,1)+3-WEEKDAY(DATE(A2,A1,1))+(1-(3>=WEEKDAY(DATE(A2,A1,1))))*7 =DATEVALUE(A2&"/"&A1&"/1")+MOD(10-WEEKDAY(DATEVALUE(A2&"/"&A1&"/1")),7)

=DATE(A2,A1,MATCH(TRUE,WEEKDAY(DATE(A2,A1,{1,2,3,4,5,6,7}))=3,0))

=DATE(A2,A1,MOD(10-WEEKDAY(DATE(A2,A1,1)),7)+1)

=DATE(A2,A1,1)+MOD(3-WEEKDAY(DATE(A2,A1,1)),7)

=DATE(A2,A1,1)+7-WEEKDAY(DATE(A2,A1,1),13)

=DATE(A2,A1,8-WEEKDAY(DATE(A2,A1,1),13))

=DATE(A2,A1,7)-MOD(DATE(A2,A1,7)-3,7)

=DATE(A2,A1,8-WEEKDAY(DATE(A2,A1,5)))

=DATE(A2,A1,8)-WEEKDAY(DATE(A2,A1,5))

評価する月内の日付を指定する方が便利な場合は、それを考慮して数式を変更できます。以下は、セルA1に実際の日付を入力した場合に使用できる数式のほんの一部です。

=DATE(YEAR(A1),MONTH(A1),MATCH(TRUE,WEEKDAY(DATE(YEAR(A1),MONTH(A1),{1,2,3,4,5,6,7}))=3,0))

=DATE(YEAR(A1),MONTH(A1),MOD(10-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1)),7)+1)

=DATE(YEAR(A1),MONTH(A1),1)+MOD(3-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1)),7)

=DATE(YEAR(A1),MONTH(A1),1)+7-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1),13)

=DATE(YEAR(A1),MONTH(A1),8-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1),13))

=DATE(YEAR(A1),MONTH(A1),7)-MOD(DATE(YEAR(A1),MONTH(A1),7)-3,7)

=DATE(YEAR(A1),MONTH(A1),8-WEEKDAY(DATE(YEAR(A1),MONTH(A1),5)))

=DATE(YEAR(A1),MONTH(A1),8)-WEEKDAY(DATE(YEAR(A1),MONTH(A1),5))

=A1-DAY(A1)+7-WEEKDAY(A1-DAY(A1)-1,3)

最後に、マクロベースのアプローチを検討することをお勧めします。以下は、最初の火曜日をすばやく把握するユーザー定義関数です。

Function FirstTuesday(M As Integer, Y As Integer) As Date     Dim dResult As Date

dResult = DateSerial(Y, M, 1)

Do While Weekday(dResult) <> vbTuesday         dResult = DateAdd("d", 1, dResult)

Loop     FirstTuesday = dResult End Function

ワークシートで行う必要があるのは、ユーザー定義関数に必要な月と年の数値を渡すことだけです。

=FirstTuesday(6,2018)

必要に応じて、月と年をセルに指定できます:

=FirstTuesday(A2,A1)

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

このヒント(13540)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。