ハロルドは、特定の日付(たとえば、5月10日)が特定の曜日(たとえば、木曜日)に発生した過去5年間を示す式を考案しようとしています。

この情報を決定する方法はいくつかあります。簡単な方法の1つは、新しいワークシートで、テストする日付(5/10/18など)をセルA1に入力することです。そのすぐ下のセルA2に、1年前の日付を入力します:5/10/17。これらの2つのセルを選択し、必要な数のセルの塗りつぶしハンドルを下にドラッグすると、5月10日の降順の日付を含む列が表示されます。

次に、セルB1に次の数式を入力します:

=WEEKDAY(A1)

この数式を、列Aの日付と同じ数の行にコピーします。

これにより、列Aの日付の曜日を表す1〜7の値が返されます。1=日曜日、2 =月曜日などであるため、5の値は木曜日を表します。したがって、この数式をセルC1に配置して、コピーすることができます。

=IF(B1=5,YEAR(A1),"")

これは、列Aの日付が木曜日である年を「呼び出し」ます。

必要に応じて、列Cの追加を省略し、代わりにフィルタリングを使用して、列Bの値が5(木曜日)である日付のみを表示することもできます。

配列数式を使用して、必要な情報を見つけることもできます。

まず、任意の列で5つのセルを選択します。次に、数式バーに次のように入力します。

=LARGE((WEEKDAY(DATE(ROW(1918:2018),5,10))=5)*ROW(1918:2018),ROW(1:5))

Ctrl + Shift + Enterを押して数式を入力します。その結果、5つのセルには、5月10日が木曜日であった過去5年間が含まれます。次のように、キー要素を名前付き範囲に置き換えることで、数式をより用途の広いものにすることができます。

=LARGE((WEEKDAY(DATE(ROW(1918:2018),MO,DA))=DW)*ROW(1918:2018),ROW(1:5))

これで、名前付き範囲MO(月)、DA(日)、およびDW(曜日)を作成するだけです。これらの名前付き範囲の値を変更すると、配列数式は5つのセルを更新して目的の年を反映します。

情報を見つける3番目の方法は、開始日と曜日を尋ねるマクロを作成することです。その後、マクロは、基準を満たす5年を取得するまで、一度に1年ずつ後退できます。

Sub CalcDates()

Dim sTemp As String     Dim dBegin As Date     Dim dWork As Date     Dim J As Integer     Dim iDoW As Integer     Dim iYears(5) As Integer

sTemp = InputBox("Beginning Date?")

dBegin = CDate(sTemp)

If dBegin > 0 Then         sTemp = InputBox("Day of Week?")

sTemp = LCase(Trim(sTemp))

iDoW = 0         For J = 1 To 7             If sTemp = LCase(WeekdayName(J)) Then iDoW = J         Next J         If iDoW > 0 Then             dWork = dBegin             J = 0             While J < 5                 If Weekday(dWork) = iDoW Then                     J = J + 1                     iYears(J) = Year(dWork)

End If                 dWork = DateAdd("yyyy", -1, dWork)

Wend

sTemp = "These are the previous five years in which "

sTemp = sTemp & MonthName(Month(dBegin)) & " " & Day(dBegin)

sTemp = sTemp & " falls on a " & WeekdayName(iDoW) & ":"

sTemp = sTemp & vbCrLf & vbCrLf             For J = 5 To 1 Step -1                 sTemp = sTemp & iYears(J) & vbCrLf             Next J             MsgBox sTemp         End If     End If End Sub

マクロが5年を見つけると、メッセージボックスに表示されます。

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

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