【初月無料キャンペーン中】gooドクター

Excel 2003です。
エクセルでシフト表を作ろうと思います。
A列2行目から10行目迄に氏名を入力 1行目のB列からAF列までに日付(1日から31日迄)が入力されています。
升目に休日の場合は空白、出勤の場合、2種類の出勤パターンで”早”または”遅”を入力していきます。
AG列の各行に確認の計算式で、
6以上の連続勤務がある場合は”fault”そうでない場合は”true”となるような
確認の式を作りたいのです。
また別の式で、”遅”の翌日に”早”がきた場合”fault”になるような式はできますでしょうか。
2点
教えてください。
どうぞ宜しくお願いします。

gooドクター

A 回答 (5件)

こんばんは!


ご希望の方法とは違いますが・・・

一つの案として、条件付書式を使って質問の条件の場合は入力時にセルの色を赤くする方法はどうでしょうか?

C2~AF10を範囲指定 → メニュー → 書式 → 条件付書式 → 「数式が」を選択 → 数式欄に
=AND(B2="遅",C2="早")
として 書式 → パターンで「赤」(←好みの色でOK)を選択し、OK

次にG6~AF10を範囲指定 → 条件付書式 → 条件を追加 → 「数式が」 → 数式欄に
=COUNTA(B2:G2)=6
として同様に好みの色を選択

これで入力した時点でそのセルに色がつくと思います。

以上、参考になれば良いのですが
的外れならごめんなさいね。m(__)m
    • good
    • 1
この回答へのお礼

tom04さん

御回答有り難うございます。
お礼が大変遅くなり失礼しました。

これは目から鱗の解凍でした。
とても分かり易くて便利ですね。
全く予想していなかったご回答でしたが、
とても便利なのでこちらを採用させていただきました。

大変参考になりました。
有り難うございました。

お礼日時:2011/03/14 16:35

No.1の回答の、後者の方は逆ではないかと。


("遅"の翌日に"早"が来た時にTRUEを返す式になっている)

=(SUMPRODUCT((B2:AE2="遅")*(C2:AF2="早"))=0)

とすべきでは。
    • good
    • 0
この回答へのお礼

don9don9さん

ご丁寧に有り難うございます。

参考になりました。

有り難うございました。

お礼日時:2011/03/14 16:37

No.3です!


たびたびごめんなさい。

前回の投稿で文章に誤りがありました。

>次にG6~AF10を範囲指定・・・

の部分を

>次にG2~AF10を範囲指定・・・

に訂正してくださ。

どうも失礼しました。m(__)m
    • good
    • 0
この回答へのお礼

tom04さん

ご丁寧にありがとうございました。

お礼日時:2011/03/14 16:36

条件が前後関係にかかわる条件で(連続といった条件は)関数では難しいと思う。


例として、1行だけ、第2行目だけを考える。B列から右にデータがあり、第32列までの各列のセルの値は


空白
のどれかとする。
エクセルは、データのあるセルに(判定のために)関数式を入れることは出来ないのは当然のこと。。だから別の離れた行以下に関数式を入れることになる。
20人未満の従業員がいる場合を考えて、例えば第21行目を注目して、そこの行の列の各セルについて
6以上の連続を問題にするので、F列までは(B-Fで5列)は6連続は無いから、G20セルに
=IF(COUNTIF(B2:G2,"早")+COUNTIF(B2:G2,"遅")=6,"x","")  
(Faultは特殊な言葉なのでXにした、OKはTrueより空白の方が、Xだけが目立つのでそうする。)
と入れて式を第32列まで右方向に複写。
これを下方向にも従業員数の行分、全列式を複写。
月初の1日からこのチェックをするなら、前月5日前からのデータが必要だが、その点質問には何も書かず、不完全だろう。
そこはどうなるのか考えてみて。別表になっていたりすると面倒。
ーーーー
上記方法は、自信はないが、質問者の方でチェックし不都合な場合の例が起こることが判ったら、無視してください。
===
本心はむしろこの程度の課題になると、VBAででもやらないと関数の組み合わせなどでは、難しいと思ったが、関数での思い付きの案を1つ挙げてみる。
    • good
    • 0
この回答へのお礼

imogashi さん。

いつも丁寧な御回答有り難うございます。
お礼が遅くなり失礼しました。

思いの外難しかったので、自分の中で理解するのに
時間をかけてしまいました。

大変参考になりました。
有り難うございました。

お礼日時:2011/03/14 16:33

>A列…に氏名…B列からAF列までに日付(1日から31日迄)



前者は
=MAX(COLUMN(A2:AF2)-LOOKUP(COLUMN(A2:AF2),(IF((COLUMN(A2:AF2)=1)+(A2:AF2=""),COLUMN(A2:AF2)))))<6
をコントロールキーとシフトキーを押しながらEnterで入力

後者は
=(SUMPRODUCT((B2:AE2="遅")*(C2:AF2="早"))>0)
をふつーにEnterで入力



#言わずもがなですが今の表では「月またぎで連続勤務」を数える方法がありません。
 上述式は「1日から」及び「31日まで」の範囲で連続日数を計算しています。
 先月末に遅で終え,今月アタマに早で始まったケースも同じです。
    • good
    • 0
この回答へのお礼

keithinさん

御回答有り難うございます。
お礼が大変遅くなり失礼しました。
思いの外難しかったので、自分の中で納得するのに
時間をかけてしまいました。
columnやsumproductなど普段余り使わなかった
ので勉強になりました。
大変参考になりました。
有り難うございました。

お礼日時:2011/03/14 16:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

人気Q&Aランキング