上一次,我发布了一个关于日期差的挑战的模糊故事,但尚未解决。我将尽力而为,因为我已尽力尝试了所有问题,但问题仍未解决。
我目前有三栏。
F
)
G
)
H
)
*造成这种情况困难的原因是仅包含工作日。
因此,例如:
如果汽车 在八月的 1月1日 st 开始维修 ,则 完成日期 是 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)))))
换句话说:
如果开始日期=星期一,则开始日期+ 11
如果开始日期=周二,则开始日期+ 12,依此类推。
这行得通,但是,我有300多行,并且向下拖动此功能不会更改单元格引用。
我了解NETWORKDAYS
和WEEKDAY
函数,但是在任何仅通过 1 周末的星期一和其他通过 2 周末通行证。
答案 0 :(得分:0)
我的假设基于@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]
-{{ 1}})。{2;1;0}
仅具有三个值:1、2和3。lookup_vector
和lookup_vector
看作是一个矩阵/表,从中可以找到我们的值:
希望所有这些都是有道理的。祝您好运!