• 締切済み

EXCELで勤務表作りたいのですが・・・ど素人です。

セル1マスを1時間で0-24までの勤務表を作りたいのです。 勤務表のファイル見つけて改ざんして24時間まで作成しました。 以下の関数がセル1マス1マス入ってます。 =IF(AND(AX$9>=HOUR($C10),AX$9<HOUR($D10)),1,"") A  B    C     D    E  F  G  H  I.....  AC 1  名前 開始時間 終了時間 0時 1時 2時 3時 4時 5時....24時 2  あ  18:00  23:00 3  い  17:00  24:00 という形で時間を入れると開始-終了時間のセルに1の値が表示され 同時にセルに色が付くのですがどうしても24:00を選択するとすべての セルで1の値が出なくなり色も付きません。 AC1の式は=IF(AND(AC$6>=HOUR($C7),AC$6<HOUR($D7)),1,"")です。 解決策とこの式の意味合いを詳しく教えては頂けないでしょうか?

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.2です! たびたびごめんなさい。 前回の回答では確かに余計なセルまで「1」が入ってしまいましたね。 数式を訂正してください。 尚、希望としては「1」の変わりにその行の名前が表示できれば良いと言うことですかね? 一応そういうことだとして・・・ まず、E2セルの数式を =IF(COUNTBLANK($C2:$D2)>0,"",IF(AND($C2<=E$1,$D2>E$1),$B2,"")) に訂正してください。 そして、メニュー → 書式 → 条件付書式 から 「数式が」を選択 → 数式欄に =E2<>"" として、好みの色を選択してください。 E2セルを列方向と行方向にオートフィルでコピーすると 画像のような感じになります。 以上、お役に立てれば幸いです。m(__)m

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.3

24:00 と入力したセルを選択して、数式バーを見ると解ると思いますが、表示は「24:00」でも、内部では「翌日の0:00」と認識しています。 そして、HOUR関数は、「時」だけを取り出す関数なので、当日の0時でも翌日の0時でも、同じ結果になります。 つまり、この数式では、24:00と入力すると、0:00と入力したのと同じ結果になってしまいます。 質問文の例を見る限りでは、分単位での入力は無い(すべて時単位)ので、そうなのであれば、入力の形式を時間形式(8:00とか)ではなく、数値形式(8)で入力するようにしてはいかがでしょうか? 分単位で入力するにしても、15分単位での入力であれば、8:15、8:30、8:45、はそれぞれ、8.25、8.5、8.75、と入力することで対応できます。 10分単位、5分単位、1分単位であれば、正確な対応は無理ですが。 そうすれば、HOUR関数とかを使う必要も無くなり、質問者様も自分が解る範囲での計算式を書けると思います。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 質問の回答とまではいかないと思いますが・・・ 質問の中の数式を拝見すると、AX$9 のように質問だけではそのセルに何が入っているのか理解できないセルがありますので、 余計なお世話だと思いますが、勝手にこちらで↓の画像のように最初から表を作成してみました。 当方使用のExcel2003の場合です。 E1~AC1セルは0~24の数値だけ入力し、セルの表示形式で書式設定から ユーザー定義で [h] としています。 そして、C・D列の時刻を入力するセルの書式設定はユーザー定義から [h]:mm としています。 E2セルの数式は =IF(COUNTBLANK($C2:$D2)>0,"",IF(AND($C2<=E$1,$D2>=E$1),1,"")) とし、条件付書式で、セル値が → 次の値に等しい とし 1 だけ入力して塗りつぶしの色を「赤」に設定し、OK これで列方向と行方向にオートフィルでコピーすると 画像のような感じになります。 以上、長々と書いた上に、余計なお世話だと思いますが、 参考になれば幸いです。 尚、的外れなら読み流してくださいね。m(__)m

lzaaki
質問者

お礼

早々ご回答ありがとうございます。 朝会社で早々やってみました。出来ました!!有難うございます。 つきましてはもう一つお尋ねしたいのですが、色で無理つぶされたセルには背景に1という数字の文字が隠れますが、B列の名前あ、い、う(佐藤、伊藤、安藤)と塗りつぶされたセルに自動に表示させる方法は有るのでしょうか?

lzaaki
質問者

補足

ん!?問題発生です。24時迄色塗出来ましたが、上記画面にもあるのですが3列のV~AC17:00~24:00なのに1時間多く成ってしまいます。(実際7時間が24~25時の1時間多く)

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 まず、Excelではセルを「列のアルファベット」+「行の番号」という形式で指定し、列のアルファベットあるいは行の番号の前に「$」がつくとそれは絶対位置(つかないと相対位置)という意味になります。なので$C10はC列は絶対位置、10行は相対位置という意味です。絶対位置と相対位置は今回の話にはあまり関係ないのでそんなもんだと思っていてください。  次にHOURというのは、$C10というセルに時間(年月日時分秒)が入っていると仮定してその「時」を取得する関数です(正確にはちょっと違いますがこんなもんだと思ってください)。つまり、HOUR("24:00:00")は「0」になります。次の日の0時という意味ですね。なので、3行目の場合 =IF(AND(AC$1>=HOUR($C3),AX$9<HOUR($D3)),1,"") は「AC$1(恐らく「24」が入っている)が17(時)より大きく0(時)よりも小さい場合に1を、そうでなければ""をこのセルの値とする」という意味になり、24は0(時)よりも小さくないのでFALSEとなり、1にはならなくなります。  解決するには時に加えて日も見なくてはいけないため、もう少し複雑な式にしなくてはいけません。残念ながら今手元にExcelが無いので正確な式を作る事はできませんが、C列(開始時間)とD列(終了時間)をそれぞれ開始時、開始分、終了時、終了分の2列ずつに分け、HOURではなく開始時の数値と終了時の数値で単純に比較するという形にした方が式が簡単になるため良いのではないでしょうか。質問に答えてなくて申し訳ありません。もしくはYEAR関数、MONTH関数、DAY関数の使い方を調べてみてください。

lzaaki
質問者

お礼

早々のご回答有難う御座いました。 今回上記nattocurryさんのご回答で解決しましたが、anmochiさんのおっしゃる年、月、日の関数もっと勉強すると2010/1/1/金22:00-2010/1/2土03:00迄の表も自動に塗ってくれるシフト表作れそうですね~!! ガンバってみます。 nattocurryにも同じ質問したのですが、塗りつぶされたセルにB列2,3で選んだ従業員の名前を自動的に表示する又は色分けする良いアイディアあればご指導願います。

関連するQ&A

  • ExcelでHOURを使って25:00の25を取り出したい

    現在シフト表の作成をしています。 そこで例えば 開始時間のセル(C7)に「17:00」 終了時間のセル(D7)に「18:00」 という数値が入力されるとM7がオレンジで塗りつぶされるように M7に「=IF(AND(M$6>=HOUR($C7),M$6<HOUR($D7)),1,"")」 という関数を入力し、条件式書式にて セルの値が1に等しい時、オレンジに塗りつぶすようにしました。 ところが終了時刻は1:00まであるので、 17時~25時が17時~1時と認識されてしまいFalseになり塗りつぶせません。 何か良い方法はないでしょうか。 HOURを使うと出来ないのであれば使わなくても構いません。 しかし視認性の良さから表示はあくまで00:00という表記にしたいです。

  • エクセルで時間計算をして表を作りたいのですが

    タイトルのとおりです。 =IF(AND(E$6>=HOUR($C7),E$6<HOUR($D7)),1,"") このような文で、シフト表をつくります。 これは時間単位ですが、30分単位も作りたいのです。 この表は開始・終了時間を入力するとシフト表に色つきバーができて、どの時間に何人いるかを見るためのものです。 勤務時間帯が時間単位ではなく、30分刻みなので30分の表部分を入れたいのです。 お詳しい方、よろしくお願いいたします。

  • Excel:勤務時間の計算がうまくいかない。

    No.1468024の質問をした者です。 勤務表を作成しています。(Excel2002を使用) 終了時刻(D列)ー開始時刻(C列)ー休憩時間(E列)=当日の勤務時間を計算しています。 No.1468024の質問でアドバイスをいただき、以下のような計算式を記述しました。 <例> =AND(C13*D13)*(MIN(IF(AND(D13>="12:00"*1,D13<="13:00"*1),"13:00",D13),"17:40")-MAX(IF(AND(C13>="12:00"*1,C13<="13:00"*1),"12:00",C13),"09:00")-E13+FLOOR(MAX(D13,"18:00")-"17:59:59","0:15")) ほぼうまくいくのですが、開始時刻9:00終了時刻12:00とした場合、勤務時間4:00となり、間違ってしまいます。(正しくは勤務時間3:00。また開始時刻9:00終了時刻が12時から13時までの間の時刻で入力された場合も勤務時間3:00と出力したいです。) 休憩時間セルに以下のような計算式を書いています。 <例> =IF(COUNT(C13:D13)<2,0,IF(D13-"12:00"*1<=0,0,IF(C13-"12:00"*1>=0,0,IF(D13<"18:00"*1,"1:00","1:20")))) 休憩時間は12時から13時までの1時間。 終了時刻が17:40以降なら20分休憩時間が加算されます。 開始、終了が入力されていないと0:00表示。 言葉足らずでしたら、進んで補足させていただきますので、よろしくお願いします。

  • エクセル勤務表を作成したい

    色々調べてみたのですが、力が足りずうまく行かないので教えてください。 (1)9:00~18:00が基本の労働時間です。 (2)18:00以降は残業 (3)昼休憩は12:00~13:00の一時間で、その分実働から引きたい (4)12:00までの勤務は昼休憩を引きたくない (5)13:00からの勤務は昼休憩を引きたくない (12:00からの勤務は13:00からと同じになります) 今までは以下のような式を入れてました。 A列:日付(問題なし) B列:曜日(問題なし) C列:勤務開始時間(勤務する方が入力予定) D列:勤務終了時間(勤務する方が入力予定) E列:実働時間 =IF(C11="","",(D11-C11)-F11-G11) F列:休憩時間(1時間)・・・・ここは無くてもいいです。 =IF(C11="","",IF(AND(D11<=TIME(12,0,0)),TIME(0,0,0),TIME(1,0,0))) G列:残業時間(18:00以降) =IF(D11<=TIME(18,0,0),"0:00",D11-TIME(18,0,0)) これが、いいレベルのものだとは思ってませんが なんとか形になったのですが・・・ (6)9:00前に出勤も残業入れる という条件を出されまして、困っています。 皆さんのお知恵を貸してください! 休憩時間は表示しなくても大丈夫です。 実働が、(4)、(5)の条件を満たしていて表示されることと 残業が9:00前までと18:00以降の合算で出ると良いのですが・・。 よろしくお願いします!

  • エクセルで24時間対応の勤務表を作りたいのですが、うまくいきません。

    現在、15分刻みの24時間対応の勤務表を作成しています。 作成中の勤務表は (1)入力規制でリストから入力された勤務開始時間と勤務終了時間をIF関数」で判定し、 (2)「条件付き書式設定」でセルを塗りつぶす というものです。 24:00という時間が0:00と判断され、IF関数で「真」に返りません。 どのような設定にすればよろしいですか?

  • excelの勤務表の入力

    officexpで、エクセルを使用しています。 勤務表なのですが、 A列に、開始時間「7:00」 B列に、終了時間「21:00」と、入力 時給の関係で C列には、8:00-20:00 までの合計働いた時間数 D列には、20:00-08:00までの合計働いた時間数をだしたい、今回の場合は、C列に12時間 D列に2時間と表示させたい、IF関数とかつかったけど、うまくいきません。 いい方法は、ないでしょうか?お教え下さい。

  • Excelで勤務表を作りたいのですが

    Excelで勤務表を作りたいのですが、なかなか関数がうまく使えません。 時間計算をご存知の方、教えて下さい。 入力列 A:出勤時刻 B:退勤時刻 C:勤務開始時間 *始業9:00のため、9時より以前の出勤時刻は9:00、9:00以降の出勤はその時刻を表示する。 D:休憩時間 E:実働時間(始:C/終:B/マイナス:D) F:時間内勤務(8時間まで) G:時間外勤務(8時間を超過したところから・22時迄) H:深夜残業(22時以降の勤務時間) このような説明でお分かり頂けるでしょうか。 よろしくお願いします。

  • エクセルで勤務表を作りたい。

    ・セルA1からセルAE1まで1か月31日分のセルを設けております。 ・たとえば3月度の勤務表は、2月16日から3月15日で毎月15日が締めです。  A1のセルに2014/2/16と入力し、表示は日にちだけ(yyyy/mm/dd)のdのみ表示です。  よってA1のセルは16と表示されています。 ・翌日B1のセルにはA1+1、C1のセルはB1+1・・・とすると16,17,18・・・と表示されます。  3月度は2月が28日までなので、セルAB1が3月15日となります。 ・ところが、数式はセルは31日分すべてに入っているのでAC1・AD1・AE1には3月の  16・17・18まで表示されます。 ・AC1・AD1・AE1の数式を削除すると、空白になりますが、4月度は12日で終わってしまいます。  希望としては、数式は31日分のセルすべてに入れたまま15以降16,17,18は空白にしたい ・関数IF等いろいろ試みましたがうまくいきません。 ・解決方法を伝授下さいよろしくお願いいたします。

  • エクセルで時間表示させる関数(勤務時間)

    勤務表管理のため、表を作成しています。 通常勤務は9:00-17:30で残業時間が15分の休憩を挟んだ後17:45-21:30までです(その後深夜残業がありますがここでは割愛します) C22に仕事開始時間、D22に仕事終了時間を入れています。 例えば9:00-22:00で仕事したとします。そして、あるセルに、残業時間開始時間、終了時間を表示させたいのですが、残業時間開始を =IF(D22> "17:30","17:45","") と入れたのですが空白で返されてしまいます。">"を"<"にするとなぜか17:45が表示されます。 終了時間は、IF(D22>="21:30",MIN(D22,"21:30"),D22) だと空白で返されます。逆にするとMIN(D22,"21:30")が返されて例えばD22に17:30とか入れると21:30と返されてしまいます。 時間計算の場合、何か特殊な設定をしないと逆になってしまうのでしょうか?

  • エクセル勤務表で昼休憩を挟んだ時の休憩算出方法

    エクセルで添付のような勤務表を作成しています。 労働時間(表中・小計)に応じた休憩時間は自動算出出来るようになったのですが、まだ課題がありまして… それは、お昼休憩を挟んだ時の休憩時間についてです。 うちでは、お昼を挟むと、勤務時間に関係なく1時間の休憩になります。(お昼休憩) 例えば、9時~18時だと、小計9時間・休憩1時間(8時間以上なので)・実労働(表中・合計)時間8時間となるので大丈夫なのですが。 9時~15時の勤務だと、小計6時間・休憩30分・実働5時間30分になってしまいます。 これを、小計6時間・休憩1時間・実働5時間になるように計算させたいのです。 表中の各計算式は以下です。 C8→勤務開始を入力 D8→勤務終了を入力 D8の小計→=IF(D8<C8,1+D8-C8,D8-C8) F8の休憩→=IF(E8<"4:00"*1,0,IF(E8<"6:00"*1,10,IF(E8<"7:00"*1,30,IF(E8<"8:00"*1,40,60))))/24/60 G8の合計→=E8-F8 です。 アドバイスよろしくお願いします。

専門家に質問してみよう