上次我发布了一个关于日期差异挑战的相当模糊的故事,我还没有解决。我会尽力详细说明,因为我已经尝试了一切力所能及的问题仍然没有解决。
我目前有三列。
F
)
汽车开始维修的日期(格式为DayOfWeek-DD-MM-YYYY)G
)
修理汽车的天数(服务水平协议[SLA];标准为10天)H
)
输出,即汽车应该完成的日期。所以startdate之后的天数**使这个案件困难的事情是只包括工作日。
所以,例如:
如果汽车在8月1日星期一开始维修,则完工日期是8月14日星期二。
我尝试用以下公式解决这个问题:
=IF(WEEKDAY(F218)=2;(F218+11);
IF(WEEKDAY(F218)=3;F218+12;
IF(WEEKDAY(F218)=4;F218+13;
IF(WEEKDAY(F218)=5;F218+14;
IF(WEEKDAY(F218)=6;F218+15)))))
换一种说法: 如果startdate = Monday然后startdate + 11, 如果startdate = Tuesday然后startdate + 12等。
这有效,但我有300多行,向下拖动此函数不会更改单元格引用。
我知道NETWORKDAYS
和WEEKDAY
功能,但我遇到任何星期一只有1个周末通行证和2个周末通过的其他日子的问题。
我的假设基于@RonRosenfeld的评论:
...虽然您可能需要从天数中减去1
=WORKDAY($F2,$G2-1)+LOOKUP(WEEKDAY(WORKDAY($F2,$G2-1),16),{1;2;3},{2;1;0})
它能做什么:
WORKDAY($F2,$G2-1)
首先,如果包括周末(周六和周日),我们希望确切地知道维修应该在哪一天完成。这部分公式将简单地给我们一个起点。
$F2
是您的维修开始日期
$G2
是修复应该服用的天数(您可能需要为此添加一列,因为,如您所述,SLA可能会发生变化,您需要轻松调整公式)WEEKDAY(WORKDAY($F2,$G2-1),16)
上面的WORKDAY
函数包含在WEEKDAY
函数中。这个WEEKDAY
函数是为了分配数字而写入一周的每一天。 [return_type]
参数16告诉Excel将它们标记为“数字1(星期六)到7(星期五)”。我们选择了16
,以便我们的LOOKUP
函数更容易编写。公式的这一部分只返回一位数字,而这个数字又用于计算出我们在排除周末时实际需要的星期几。LOOKUP(WEEKDAY(WORKDAY($F2,$G2-1),16),{1;2;3},{2;1;0})
我们通过使用函数的第一种形式添加LOOKUP
函数的结果来完成公式:
LOOKUP(lookup_value,lookup_vector,[result_vector])
我们使用lookup_value
函数在前一个项目符号点找到了WEEKDAY
。现在我们希望Excel在我们的公式中使用lookup_vector
- {1;2;3}
- 找到正确的值添加到公式的第一部分(在我们的公式中使用[result_vector]
- {2;1;0}
找到)。
lookup_vector
只有三个值:1,2和3。
周六有1个信号
周日有2个信号
其他日子都有3个信号lookup_vector
和[result_vector]
想象成一个矩阵/表,从中找到我们的值:
1 2
2 1
3 0希望所有这些都是有道理的。祝你好运!