Excel 2019/2021中判断日期时间范围的工作日及周三等条件方法
Excel 2019/2021 交易日志掉期费计算方案
基于你的需求,以下是针对DateTimeIn和DateTimeOut列的公式实现,所有公式适配非365版本的Excel:
1. 计算排除节假日的工作日天数
使用NETWORKDAYS函数提取日期部分并计算工作日,排除Holidays表的节假日:
=NETWORKDAYS(INT([@DateTimeIn]), INT([@DateTimeOut]), Holidays!$A:$A)
INT([@DateTimeIn])/INT([@DateTimeOut]):提取日期时间中的纯日期部分Holidays!$A:$A:指定存放节假日的单元格区域
2. 判断工作日范围是否包含周三
通过生成日期序列并检查周几,判断交易覆盖的工作日中是否包含周三:
=SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(TEXT(INT([@DateTimeIn]),"yyyy-mm-dd")&":"&TEXT(INT([@DateTimeOut]),"yyyy-mm-dd")))=4))>0
ROW(INDIRECT(...)):生成交易起始到结束的日期序列WEEKDAY(...,4):周三对应返回值为4(默认周日=1)--:将布尔值转换为数字,SUMPRODUCT求和后大于0则说明包含周三
3. 判断交易结束时间是否晚于17:00 ET
提取结束时间的时间部分,与17:00对比:
=MOD([@DateTimeOut],1)>"17:00"
MOD([@DateTimeOut],1):提取日期时间中的纯时间部分
整合计算掉期费
结合上述三个条件,按照规则计算掉期费(晚于17:00 ET触发,含周三则3倍,否则1倍):
=IF( MOD([@DateTimeOut],1)<="17:00", 0, IF( SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(TEXT(INT([@DateTimeIn]),"yyyy-mm-dd")&":"&TEXT(INT([@DateTimeOut]),"yyyy-mm-dd")))=4))>0, 3, 1 ) )
- 逻辑说明:
- 若结束时间不晚于17:00 ET,掉期费为0
- 若结束时间晚于17:00 ET,且交易覆盖的工作日包含周三,掉期费为3倍
- 其他晚于17:00 ET的情况,掉期费为1倍
内容的提问来源于stack exchange,提问作者Matteo
相关产品推荐
相关产品推荐

