计算第一个星期二(Microsoft Excel)
克里斯汀(Christine)需要一种方法来计算给定月份的第一个星期二。
因此,给定一个月零一年,她需要获取第一个星期二的日期。
您可以使用许多不同的公式来获得所需的结果。大多数方法都以某种方式使用WEEKDAY函数,因为它可以返回代表任何给定日期的星期几的数值。假设您在A1单元格(1到12)中输入了一个月,在A2单元格中输入了四位数的年份,则以下公式将全部返回该月第一个星期二的日期。 (我按从长到短的长度顺序排列了公式。)
=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_是您进行经济高效的Microsoft Excel培训的来源。
本提示(13540)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。