• ベストアンサー

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

Excel97で勤務表を作る事になったのですが、 始業時間 終業時間 休憩時間 時間内 時間外 合計時間  8:00    18:30    1:00    8.0   1.5    9.5 とゆう形式で作りたいのですが、始業時間、終業時間だけ入力するだけで他が計算されるようにできないでしょうか? あと、合計で何日働いたかカウントしたりは出来ないのでしょうか? 初心者なので、どうしたら良いのかぜんぜん分かりません(T_T) どなたか良いアドバイスをお願いします。m(__)m

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.6

余り複雑にしないで算式を書いてみました。参考にして下さい。 まず表題をセットしておきます。A1からF1まで。      A    B    C   D   E    F    1 始業時刻 終業時刻 休憩時間 時間内 時間外 合計時間 計算式を簡単にするためにI1,J1,K1,L1に下記の様に区切りとする時刻を入れておきます。 I1,J1,K1,L1にはそれぞれ、TM8,TM12,TM13,TM17の名前を付けておきます。  (セルを選択してメニューの挿入→名前→定義で入力します)      I   J    K   L   1  8:00  12:00  13:00  17:00     <TM8>  <TM12>  <TM13> <TM17> A2,B2は時刻を入力します。C,D,E,F列の算式は  C2=IF(AND(A2<=TM12,TM13<=B2),1,0)  D2=F2-E2  E2=IF(B2>TM17,B2-MAX(A2,TM17),0)/"1:00"  F2=(IF(AND(TM12<B2,B2<TM13),TM12,B2)-IF(A2<=TM12,MAX(A2,TM8),MAX(A2,TM13)))/"1:00"-C2 C,D,E,F列は質問の通り数値にしてあります。表示形式を数値にして下さい。(少数1桁) 必要分だけ下にコピーして下さい。また、何日働いたかはどこかの入力列をcount()でできます。 少し条件があります。始業時刻<終業時刻で終業時刻は24時を超えない。 朝8時前の出勤を入力しても8時からの計算です。 昼休み時間帯に出社しても昼休みはカウントなしで13時から勤務。 昼休み時間帯に退社しても昼休みはカウントなしで12時までの勤務。 この質問はshigatsuさんが言っておられるように業種によってはまだまだ複雑なものかもしれません。会社によっては時間外の時間の単位が決まっていたりとか。don_chaさんの言われる「場合分け」を行うことが第一歩でしょうか。 上の算式も穴があるかもしれません。参考にして下さい。

chibi126
質問者

お礼

回答ありがとうございます。m(__)m 早速、試してみました。 で、で、出来ました!!!

その他の回答 (5)

  • Maruchan
  • ベストアンサー率33% (5/15)
回答No.5

実際エクセルで作るのは簡単です。 ただ、とてもここに書くことはできません。 どうしてもプログラムがご入用なら メールでお送りします。 で、個別にご連絡ください。 それをごらんいただいた上で、再度ご質問ください。

chibi126
質問者

お礼

回答ありがとうございます。m(__)m Excelはまったくの初心者なので、どんなアドバイスなのかも分かっていませんでした。(^^ゞ 今回はなんとか自分でがんばってみます!

noname#1660
noname#1660
回答No.4

再び登場です。お待たせ致しました。超シンプルですが作ってみました。長くなりますがこんな感じで・・・ 「」は見やすくするために書いたので、エクセルのセル内には、「」を除いた値を入れて下さい。 まず、セルA1に「日」・B1に「始業時間」・C1に「終業時間」・D1に「休憩時間」・E1に「時間内」・F1に「時間外」・G1に「合計時間」と入れます。 セルK2に「1:00」・L2に「17:00」を入れます。 セルA2~A32に「1~31」をそれぞれ入れます。 ここまでは、簡単な表と初期設定です。 セルD2に「=IF(B2=I2," ",$K$2)」と入れ、それをD3~D32までコピーします。 これはB2に始業時間が入ると自動的に休憩時間を設定するものです。 セルE2に「=IF(B2=$L$2,0,$L$2-B2-D2)」と入れ、それをE3~E32までコピーします。 これは通常勤務時間を計算していますが、遅刻・早退が無いのならば「=IF(B2=$L$2,0,$L$2)」でも構いません。 セルF2に「=J2」を入れ、それをF3~F32までコピーします。 セルG2に「=E2+F2」を入れ、それをG3~G32までコピーします。 H列・I列は使いません。 セルJ2に「=IF(C2=I2,0,M2)」を入れ、それをJ3~J32までコピーします。 これは、時間外を計算結果を判断しています。 セルM2に「=C2-$M$2」を入れ、それをM3~M32までコピーします。 これは時間外を計算しています。 セルB35あたり(どこでも自由です。)に、「今月の勤務日数」とでも入れ、その2つ隣りあたりのセルに「=COUNT(B2:B32)」といれます。 これは、データーが入力された回数をカウントし、それを出勤日数としています。 以上ですが、分かりますか?

chibi126
質問者

お礼

回答ありがとうございます。m(__)m 早速、試してみました。 分かりやすく教えて頂いてとても助かりました。(^o^)

  • don_cha
  • ベストアンサー率34% (139/407)
回答No.3

セル内に関数を埋め込み、指定されたセルの入力があると自動的に計算するのはExcelの得意とする分野ですので、ご質問にある内容を網羅した勤務表を作ることは可能です。(私自身作りましたし) ただし、プログラム(セルに関数を書くだけでも)を作る上で大切なことは、条件(場合分け)の洗い出しを、まず行うことです。(ご質問の内容だけでは、一部分のみしかわからないので) 洗い出しが終わると、「○○条件で△△処理がしたい」と言う形になり、質問する場合でも答える側でも的確な情報が得られると思います。

chibi126
質問者

お礼

回答ありがとうございます。m(__)m みなさんの回答を見て「なんて説明の無い質問をしたんだ!!!」 と分かりました。大変失礼しました。

  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.2

なんか、研修期間終わった新入社員への課題みたいですね。(出題経験あり) 作り出すと意外と大変ですよ。24時を過ぎた勤務はどうするかとかね。まぁ業種によるでしょうけど・・・ 関数を作って処理する場合、タイムシリアル値というのが頻繁に出てくると思います。1が1日、それを24で割った値が1時間、更にそれを60で割った値が1分というふうに、通常の10進数で日付の計算をするようになっています。 これを使えば X.X時間という表示を出すための計算もわかりやすくなると思います。 まずは ・ユーザ定義関数の作り方 ・タイムシリアル値 などをExcelのヘルプで探してみてください。 タイムシリアル値は「日付」などで検索すると出てきます。

chibi126
質問者

お礼

回答ありがとうございます。m(__)m ヘルプを見てみましたが....わかりません。(T_T)

noname#1660
noname#1660
回答No.1

ここに、それを書き込むのは、かなり酷というもので・・・ ちなみに、休憩時間は12:00~13:00として構わないのでしょうか? 通常の勤務時間は8:00~17:00でしょうか? 午前だけの勤務とか午後だけの勤務(休憩時間がない)があるのでしょうか?  書式は何でも構わないのでしょうか?(普通は表ですかね) 関数を利用した計算だけで、なんとかなりそうですが

chibi126
質問者

補足

すみません。説明が全然足りなかったですね。 休憩時間は12:00~13:00で通常の勤務時間は8:00~17:00です。 休憩時間は必ず1時間あります。書式は表でお願いします。