您可以将以下所有内容嵌套到单个列中,但我将逐步执行此操作,假设每个步骤都有新列。我假设order type
是column A
,order date
是column B
,target ship date
是column C
。
您要做的第一件事是制定一个有效的订单日期,该日期从订单日期中剔除时间,如果晚于发货时间,则添加一天,我们会将其放入column D
。看起来像这样=IF(TIME(HOUR(B2),MINUTE(B2),SECOND(B2))>TIME(11,59,0),DATE(YEAR(B2),MONTH(B2),DAY(B2))+1,DATE(YEAR(B2),MONTH(B2),DAY(B2)))
然后你可以用这个公式做目标=IF(A2="USA",B2+2,IF(A2="Med",IF(WEEKDAY(D2)>4,D2+7-WEEKDAY(D2)+4,D2+4-WEEKDAY(D2)),IF(A2="Canada",IF(WEEKDAY(D2)>5,D2+7-WEEKDAY(D2)+5,D2+5-WEEKDAY(D2)),"Invalid")))
编辑:详细说明 D 列的工作原理:
该TIME
函数接受三个参数,Hour
,Minute
和Second
。我们正在做的是从使用的日期+时间值中获取时间,B2
并TIME(HOUR(B2),MINUTE(B2),SECOND(B2))
查看它是否大于(晚于) 11:59am TIME(11,59,0)
。当 B2 晚于 11:59 时,我们从日期+时间中取出时间DATE(YEAR(B2),MONTH(B2),DAY(B2))
并添加 1 天+1
并返回。如果时间早于 11:59,那么我们只返回当前日期。
TIME(11,59,0)
您可以通过将语句的一部分更改为IF
您想要的任何时间来更改截止时间。如果每个不同值的截止值不同,则可以将订单类型包含TIME(11,59,0)
在一个IF
语句中(实际上它将是 2-3 个 if 语句,因为存在三种可能性。作为替代方案,如果您有很多订单类型或您的截止日期将来可能会发生变化,您可以制作一个查找表,然后使用该VLOOKUP
语句而不是将时间硬编码在公式本身中。