0

我一直在为我正在处理的模型在 excel 中创建一个周历,在用户输入的日期(开始日期和结束日期)之间的几周内,其值为 1,而在这些日期之外则为零。由于日历是周历,因此该函数当前将用户输入的日期(可以是一年中的任何日期)与一周的第一天(从星期日开始的一周)进行比较。问题是,该功能仅适用于不在该月的前四或五天的输入日期,因此如果用户将 1 月 1 日作为开始日期,该功能将不起作用。

我想做的是让它适用于任何日期。

目前,该函数将通过添加前一周的值来计算单元格值(因此,如果日期在开始日期之后但在结束日期之前,前一周的值为 1),然后以以下 IF 语句为条件:

  1. 如果开始日期与当周的第一天在同一月份;和
  2. 如果开始日期的天值小于当周第一天的天值+6(即第一个条件确定是在同一周);和
  3. 如果开始日期的day值大于当周第一天的day值(即第二个条件确定是否在同一周)

如果 IF 语句解析为 TRUE,则它加 1。问题在于,当月的前几天开始日期是 IF 语句不解析为 true。我认为这是因为本周的第一天不在同一个月。

以下是该函数的一个示例:

=AG263+IF(AND(AH$260=MONTH(Assumptions!$B118),DAY(AH$262)+6>=
(DAY(Assumptions!$B118)),DAY(AH$262)
=DAY(Assumptions!$B118)),1,0)+IF(AND(AH$260=MONTH(Assumptions!$B125),
DAY(AH$262)+6>=(DAY(Assumptions!$B125)),DAY(AH$262)<=DAY(Assumptions!$B125))
,-1,0)

函数中的第二个 IF 语句用于结束日期,与开始日期有相同的问题。

非常感谢任何帮助。

注意:日期是正确的日期。:)

4

1 回答 1

1

Excel 有两个功能可以让您绕过整个检查...它们是WEEKDAYWEEKNUM

WEEKDAY 根据您一周的开始时间返回星期几...

例如,= WEEKDAY ( DATE (2013,9,16), 1) 返回 2,因为今天(星期一)是一周的第 2 天,星期天从星期天开始。

WEEKNUM返回一年中过去的周数...

例如,= WEEKNUM ( DATE (2013,9,16), 1) 返回 38,因为今天(2013 年 9 月 16 日)是 2013 年的第 38 周,如果您从星期日开始计算...

使用这些检查,您应该能够找到日历输入的星期的边界,而无需进行所有IF检查。

祝你好运!

于 2013-09-16T07:53:36.757 回答