这是earlier question的后续行动。
@ForwardED我试图将您原来的单个静态公式转换为单个动态公式。
不幸的是,我的雇主的过滤器会让某些东西超链接,但不允许我从同一网站下载或查看。我也试图想出一个浮动日期的公式。
答案 0 :(得分:1)
以下是我在原始问题上提供的扩展说明的副本。我不确定你是否错过了。它处理的假期有一个像圣诞节,每年12月25日的设定日期。但是,如果它在星期六下降,则工作时间是星期五,如果是星期日,那么休息日是星期一。
我们需要再次参考电子表格中的一些单元格,以便我再次使用Q10作为示例,我们将假设日期为2014/10/24。
=IF(WEEKDAY(DATE(YEAR(Q10),12,25))=7,DATE(YEAR(Q10),12,24),IF(WEEKDAY(DATE(YEAR(Q10),12,25))=1,DATE(YEAR(Q10),12,26),DATE(YEAR(Q10),12,25)))
公式首先检查工作日是星期六。我们使用将返回星期几的函数来执行此操作。请参阅原始问题中的步骤2)。这部分来自上面的等式:
WEEKDAY(DATE(YEAR(Q10),12,25))
在这种情况下,它将返回与日期函数产生的星期几相对应的单个整数1到7。如果它是1我们知道它的星期日,如果它的7我们知道星期六。所以周六的支票是:
WEEKDAY(DATE(YEAR(Q10),12,25))=7
如果WEEKDAY()= 7为真,那么我们提供前一天的日期,实际上只是从我们看到的日期减去1。我们使用公式的这一部分来计算:
DATE(YEAR(Q10),12,24)
注意我如何将当天从25改为24.另一种方法是回收我们的日期,让计算机使用以下公式再做一次计算:
DATE(YEAR(Q10),12,25)-1
or
DATE(YEAR(Q10),12,25-1)
这一切都位于if语句的TRUE部分。因此,如果日期不在星期六,那么我们将在IF声明的FLASE部分结束。在这里,我们用第二个IF检查星期日的日期。我们使用与周六检查相同的理论和流程。
IF(WEEKDAY(DATE(YEAR(Q10),12,25))=1,DATE(YEAR(Q10),12,26),DATE(YEAR(Q10),12,25))
在IF语句中放置IF语句通常称为“嵌套”。整个IF语句发生在前一个IF的FALSE部分,检查它是否是星期六。这次我们检查了星期天:
WEEKDAY(DATE(YEAR(Q10),12,25))=1
如果这是真的,那么我们需要将日期增加1天,而不是像星期六那样减少日期:
DATE(YEAR(Q10),12,26)
or
DATE(YEAR(Q10),12,25)+1
or
DATE(YEAR(Q10),12,25+1)
这是周日检查的真实部分。从逻辑上讲,获取此嵌套IF语句的FALSE部分的唯一方法是使星期六检查失败,然后不通过星期日检查。这意味着你不需要经历并检查WEEKDAY是否为2,3,4,5或6!它是通过消除星期日和星期六(1和7)的过程之一。如果日期是星期一到星期五,我们不需要更改日期,可以保持原样:
DATE(YEAR(Q10),12,25)
我意识到我没有解释日期功能是如何工作的,尽管我认为我曾尝试过以前的一个问题......无论如何! DATE(arg1,arg2,arg3)需要三个不同的参数作为整数或其他返回整数的函数。
arg1是年份所以2014年,1995年,1965年都是可接受的整数。我们也可以使用YEAR(Q10),其中单元格Q10保持2014/10/24的日期。在这种情况下,YEAR(Q10)将返回2014年。
arg2是月份,需要是1到12范围内的整数。再次,你总是可以使用一个返回该范围内整数的公式,例如我们之前的MONTH(Q10) Q10的值将返回10.
arg3是天,与上面类似,它需要是一个整数。像DAY(Q10)这样的公式将返回值24。
这意味着如果我们知道假日的哪一天,我们可以通过提供一个月份和日期强制它来约会,并让年份由提供您感兴趣的年份的公式决定。所以如果你查看最后一个公式,你可以看到我们将月份固定为12,将那一天固定为25年。这一年将从Q10单元格中提供的日期确定。