次のすべてを単一の列にネストすることもできますが、各ステップで新しい列を想定して、これを段階的に行います。order type
はcolumn A
、order date
はcolumn B
、 は であるとtarget ship date
仮定しますcolumn C
。
最初に行うことは、有効な注文日を作成することです。これにより、注文日から時間が取り除かれ、出荷時間より遅い場合は 1 日追加されます。これを に入れます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
の 3 つの引数を取ります。私たちが行っているのは、使用の日付と時刻の値から時間を取得し、それが 11:59am よりも大きい (遅い) かどうかを確認することです。B2 が 11:59 より遅い場合は、date+time の休暇を取得し、1 日を追加して返します。時刻が 11:59 より前の場合は、現在の日付を返します。Hour
Minute
Second
B2
TIME(HOUR(B2),MINUTE(B2),SECOND(B2))
TIME(11,59,0)
DATE(YEAR(B2),MONTH(B2),DAY(B2))
+1
ステートメントのTIME(11,59,0)
一部を任意の時間に変更することで、カットオフ時間を変更できます。IF
注文タイプが異なる値ごとにカットオフが異なる場合はTIME(11,59,0)
、IF
ステートメントでラップします (3 つの可能性があるため、実際には 2 ~ 3 の if ステートメントになります。別の方法として、注文タイプが多数ある場合や、締め切り日は将来変更される可能性があり、ルックアップ テーブルを作成VLOOKUP
してから、式自体に時刻をハード コードする代わりにステートメントを使用できます。