哈罗德(Harold)正在尝试设计一个公式,该公式将告诉他过去五年中某特定日期(例如5月10日)发生在一周的特定日期(例如星期四)。

您可以通过多种方法来确定此信息。一种简单的方法是,在新工作表中,将要测试的日期(例如5/10/18)输入到单元格A1中。在此下方的A2单元格中,输入上一年的日期:5/10/17。选择这两个单元格,然后向下拖动填充手柄,以得到所需的许多单元格,最后得到一列,其中包含日期为5月10日(降序年份)。

接下来,在单元格B1中输入以下公式:

=WEEKDAY(A1)

向下复制此公式,直到获得与A列中的日期一样多的行。

这将返回值1到7,代表A列中日期的星期几。由于1 =周日,2 =星期一,依此类推,这意味着任何值5都将代表星期四。因此,您可以将此公式放入单元格C1中并向下复制:

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

这会“调出” A列中的日期为星期四的年份。

如果愿意,您可以简单地放弃添加C列,而使用过滤仅显示B列中值为5(星期四)的那些日期。

您还可以使用数组公式来查找所需的信息。

首先,在您想要的任何列中选择五个单元格。然后,在编辑栏中键入以下内容:

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

通过按Ctrl + Shift + Enter输入公式。结果是五个单元格将包含最近的五年,其中5月10日是星期四。您可以通过用以下方式将关键元素替换为命名范围来使公式更通用:

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

现在,您需要做的就是创建命名范围MO(月),DA(天)和DW(星期几)。在这些命名范围中更改值时,数组公式将更新五个单元格以反映所需的年份。

查找信息的第三种方法是创建一个要求开始日期和星期几的宏。然后,宏可以一次后退一年,直到获得符合条件的五年。

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

当宏找到五年时,它将在消息框中显示它们。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本提示(13529)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。