适用时计算第 5 天 [星期几] 的公式

适用时计算第 5 天 [星期几] 的公式

我使用以下公式来获取该月的第 n 个 xday:

=DATE(B2,A2,1+7*n)-WEEKDAY(DATE(B2,A2,8-xday))

其中年份在 B2 中,月份(从 1 到 12 的数字)在 A2 中,并且xday是表示星期几的数字(1 = 星期日至 7 = 星期六),因此对于第一个星期六,结果变为:

=DATE(B2,A2,1+7*1)-WEEKDAY(DATE(B2,A2,8-7))

现在,这适用于有 4 周的月份。我该如何修改此公式来计算月份何时有 5 周?

答案1

作为一个快速而丑陋的解决方案,你可以说

=IF(MONTH(DATE($B$2,$A$2,1+7*n)-星期几(日期($B$2,$A$2,8-))) = 2澳元,
          日期($B$2,$A$2,1+7*n)-星期几(日期($B$2,$A$2,8-)),
          “不存在的日期”)

即,如果您的公式计算出的日期在正确的月份,请使用它。如果已经溢出到下个月的第一周,则不要使用它。

答案2

尝试这个公式

=(B2&"-"&A2&"-"&1+7*n-WEEKDAY(DATE(B2,A2,8-xday)))+0

它的作用实际上和原来的相同,只是它将日期构建为文本字符串,例如,对于 2012 年 10 月的第 5 个星期二,它将创建此文本字符串

2012-10-30

....然后末尾的 +0 将该字符串强制转换为日期,即 2012 年 10 月 30 日。但如果没有第 5 个 xday,则创建的字符串不是有效日期,例如,对于 10 月的第 5 个星期六,您将得到 2012-10-34。显然这不是有效日期,因此当您添加零时,强制转换不起作用,您会得到 #VALUE!错误。如果您更喜欢短信,那么只需使用 IFERROR,如下所示

=IFERROR((B2&"-"&A2&"-"&1+7*n-WEEKDAY(DATE(B2,A2,8-xday)))+0,"No 5th day")

相关内容