次のすべてを単一の列にネストすることもできますが、各ステップで新しい列を想定して、これを段階的に行います。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 より前の場合は、現在の日付を返します。HourMinuteSecondB2TIME(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してから、式自体に時刻をハード コードする代わりにステートメントを使用できます。