シートの記録の日時に基づいて、特定の作業シフトレターを新しい列に割り当てようとしています。
計算を簡単にするために、2つの新しいフィールドを作成しました。
私が使用したい交代制勤務の文字は次のとおりです。
以下は私が行ったことです。コードは機能しますが、シフトA、B、Cでのみ機能します。機能させることができないため、WDとWNも含まれています。
=IF(AND([@[Hour of Day]]>=6,[@[Hour of Day]]<14,OR([@WeekDay]=1,[@WeekDay]=2,[@WeekDay]=3,[@WeekDay]=4,[@WeekDay]=5)),"A",
IF(AND([@[Hour of Day]]<22,[@[Hour of Day]]>=14,OR([@WeekDay]=1,[@WeekDay]=2,[@WeekDay]=3,[@WeekDay]=4,[@WeekDay]=5)),"B",
IF(AND([@[Hour of Day]]>=22,[@[Hour of Day]]<6,OR([@WeekDay]=1,[@WeekDay]=2,[@WeekDay]=3,[@WeekDay]=4,[@WeekDay]=5)),"C",
IF(AND([@[Hour of Day]]>=6,[@[Hour of Day]]<18,OR([@WeekDay]=6,[@WeekDay]=7)),"WD",
IF(AND([@[Hour of Day]]>18,[@[Hour of Day]]>0,[@[Hour of Day]]<6,OR([@WeekDay]=6,[@WeekDay]=7)),"WN","C")))))
最後のIF条件に問題があります。時間> 18と時間<6がありますが、これは決して満たされることはありません。それを2つのifステートメントに分割する必要があります。日= 6または7で時間> 18の場合はWN、それ以外の場合は日= 7または1で時間<6の場合
=IF(AND([@[Hour of Day]]>=6,[@[Hour of Day]]<14,OR([@Weekday]=1,[@Weekday]=2,[@Weekday]=3,[@Weekday]=4,[@Weekday]=5)),"A",
IF(AND([@[Hour of Day]]<22,[@[Hour of Day]]>=14,OR([@Weekday]=1,[@Weekday]=2,[@Weekday]=3,[@Weekday]=4,[@Weekday]=5)),"B",
IF(AND([@[Hour of Day]]>=22,[@[Hour of Day]]<6,OR([@Weekday]=1,[@Weekday]=2,[@Weekday]=3,[@Weekday]=4,[@Weekday]=5)),"C",
IF(AND([@[Hour of Day]]>=6,[@[Hour of Day]]<18,OR([@Weekday]=6,[@Weekday]=7)),"WD",
IF(AND([@[Hour of Day]]>=18,OR([@Weekday]=6,[@Weekday]=7)),"WN",
IF(AND([@[Hour of Day]]<6,OR([@Weekday]=1,[@Weekday]=7)),"WN","C"))))))
更新
@Jaquezが指摘した元の式の欠陥を考慮して、この式を作成しました。
=IF((FLOOR((([@Weekday]*24+[@[Hour of Day]]-6)+7*24)/24,1))<6,CHOOSE(ROUNDUP([@[Hour of Day]]/8,0),"A","B","C"),IF((MOD([@S2],24))<12,"WD","WN"))
週の初めからの期間を時間単位で計算し、6でオフセットして、日をまたがるCシフトの重なりを排除しています。次に、モードを使用して、シフトを平日は8時間シフトに、週末は12時間シフトに分割しています。
急いでこれを行うので、より詳細な説明が必要な場合はお知らせください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加