- ベストアンサー
エクセル 連続勤務数のチェック
バイトAのシフトが以下の場合 チェック 日 月 火 水 木 金 土 日 月 火 水 木 金 土 ・・・ 週 日 日 夜 非 夜 日 日 週 日 夜 日 夜 非 ・・・ ○ 週=週休、非=非番 日=日勤、夜=夜勤 日 月 火 水 木 金 土 日 月 火 水 木 金 土 ・・・ 週 夜 日 非 夜 日 日 日 夜 夜 週 非 日 夜 ・・・ × チェックの判定は連続勤務が5日を超えていなければ○、 超えていれば×です。 ○×を表示する関数はどうなりますか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (4)
- kagakusuki
- ベストアンサー率51% (2610/5101)
回答No.1です。 >今後のメンテナンスを考えると との御意見が御座いましたので、若干メンテナンスしやすい形にしてみました。 =IF(COUNTIF($C4:$AG4,"*?"),IF(SUMPRODUCT(ISNUMBER(MATCH(OFFSET($C4:$AB4,,),{"日","夜"},0))*ISNUMBER(MATCH(OFFSET($C4:$AB4,,1),{"日","夜"},0))*ISNUMBER(MATCH(OFFSET($C4:$AB4,,2),{"日","夜"},0))*ISNUMBER(MATCH(OFFSET($C4:$AB4,,3),{"日","夜"},0))*ISNUMBER(MATCH(OFFSET($C4:$AB4,,4),{"日","夜"},0))*ISNUMBER(MATCH(OFFSET($C4:$AB4,,5),{"日","夜"},0))),"×","○"),"") もし、列範囲をC4~AG4ではなく、例えばC4~Z4に変更する場合には、Excelの置換機能を使用して「$AB」を「$U」に[すべて置換]して下さい。
お礼
参考にさせていただきます。 ありがとうございました。
- Chiquilin
- ベストアンサー率30% (94/306)
一式でやる意味があるのですか? =IF(MAX(FREQUENCY(COLUMN(A2:O2),(A2:O2<>"日")*(A2:O2<>"夜")*COLUMN(A2:O2))-1)<5,"○","×") 特にお勧めはしません。
お礼
参考にさせていただきます。 ありがとうございました。
- bunjii
- ベストアンサー率43% (3589/8249)
>チェックの判定は連続勤務が5日を超えていなければ○、超えていれば×です。 >○×を表示する関数はどうなりますか? 貼付画像はExcel 2013で検証した結果です。 AG2=IF(SUMPRODUCT(MAX((B2:AB2="日")+(B2:AB2="夜")+(C2:AC2="日")+(C2:AC2="夜")+(D2:AD2="日")+(D2:AD2="夜")+(E2:AE2="日")+(E2:AE2="夜")+(F2:AF2="日")+(F2:AF2="夜")))=5,"×","○") 勤務の配列値を1日ずつずらした配列を5行分について"日"と"夜"が一致する配列を加算すると連続5日勤務がある組み合わせが見つかります。 従って、最大値が4以下のとき連続5日の勤務が無いことになります。 このチェック方法では6以上の値が返りませんので、最大値が5であれば5日以上の連続勤務が存在することになります。
お礼
参考にさせていただきます。 ありがとうございました。
- kagakusuki
- ベストアンサー率51% (2610/5101)
今仮に、「週」、「非」、「日」、「夜」等がC4~AG4の範囲に入力されているものとします。 その場合、連続勤務が最大でも6日未満の場合には「×」、6日以上となる事もある場合には「○」を表示する関数は次の様なものとなります。 =IF(COUNTIF($C4:$AG4,"*?"),IF(SUMPRODUCT((($C4:$AB4="日")+($C4:$AB4="夜")>0)*(($D4:$AC4="日")+($D4:$AC4="夜")>0)*(($E4:$AD4="日")+($E4:$AD4="夜")>0)*(($F4:$AE4="日")+($F4:$AE4="夜")>0)*(($G4:$AF4="日")+($G4:$AF4="夜")>0)*(($H4:$AG4="日")+($H4:$AG4="夜")>0)),"×","○"),"") 尚、上記の関数では、$C4:$AB4や$H4:$AG4等といった参照先のセル範囲は、「週」、「非」、「日」、「夜」等が入力されているC4:AG4のセル範囲よりも5列だけ短い範囲で、その「5列だけ短いセル範囲」の位置が ((セル範囲="日")+(セル範囲="夜")>0) という組み合わせの1組ごとに、右に1列ずつずれて行っていて、その組み合わせが全部で6組(←連続6日以上で「○」とするため)だけ組み合わさっている形となっています。
お礼
参考にさせていただきます。 ありがとうございました。
お礼
分かりやすい回答ありがとうございます。 早速業務で使用させていただきます。