Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(指定なし : 指定なし)
勤怠管理について
投稿日時: 23/04/15 20:46:21
投稿者: SURT

1 04/15 出勤 9:00
2 04/15 退勤 10:00
3 04/15 出勤 11:00
4 04/15 退勤 12:00
5 04/15 出勤 13:00
6 04/15 出勤 13:05 ※誤入力で出勤中に出勤を押している
7 04/15 退勤 14:00
 
という.csvファイルをタイムカードから読み込みます
このとき、同じ日付のなかでの出勤退勤を休憩扱いで計算するにはどのようにしたらいいですか?
上記のセルの横に
 
1 04/15 出勤 9:00 出勤
2 04/15 退勤 10:00 休憩開始
3 04/15 出勤 11:00 休憩終了
4 04/15 退勤 12:00 休憩開始
5 04/15 出勤 13:00 休憩終了
6 04/15 出勤 13:05 
7 04/15 退勤 14:00 退勤
としたいです(上記の表を印刷して労働時間の証明にします)
結果的に
労働時間3時間
休憩時間2時間
も求めたいです
 
実際の.csvファイルには一ヶ月から数ヶ月分の上記データが一覧になっていますので
複数日が混在しています

回答
投稿日時: 23/04/15 21:56:19
投稿者: WinArrow

よくわかアないのですが、
 
出勤 退勤 出勤 退勤 出勤 退勤
 
という考えを
 
出勤 休憩開始 休憩終了 休憩開始 休憩終了 退勤
 
のような形にしたら、いかがでしょうか?

投稿日時: 23/04/15 23:27:25
投稿者: SURT

タイムカードというかタイムレコーダーというのでしょうか
それから出力されるデータが先述ののうなものなので困っています

回答
投稿日時: 23/04/15 23:38:31
投稿者: 半平太

最上段に一行挿入する(データを2行目からにする)
 
D2セル =IF(A2="","",IF(OR(A1<>A2,A2<>A3),B2,IF(B1<>B2,IF(B2="退勤","休憩開始","休憩終了"),"")))
 
D2の数式を下にコピーする
 
E2セル =SUM(SUMIF(D:D,{"出勤","退勤"},C:C)*{-1,1})-F2
F2セル =SUM(SUMIF(D:D,{"休憩終了","休憩開始"},C:C)*{1,-1})
 
<結果図>

行  __A__  __B__  __C__  ____D____  ____E____  ____F____
 1                                  労働時間   休憩時間 
 2   4/15  出勤    9:00  出勤            3:00       2:00
 3   4/15  退勤   10:00  休憩開始                       
 4   4/15  出勤   11:00  休憩終了                       
 5   4/15  退勤   12:00  休憩開始                       
 6   4/15  出勤   13:00  休憩終了                       
 7   4/15  出勤   13:05                                 
 8   4/15  退勤   14:00  退勤                           

 

回答
投稿日時: 23/04/16 10:24:10
投稿者: WinArrow

「出勤」−「退勤」のパターンが連続している・・・が前提となっていると思いますが、
誤入力で、「出勤」の次に「出勤」となっている
このような間違いを検知したいということだと思います。
しかし、誤入力は、これだけとは限らないと思います。
実際の「出勤」と休憩終了の「出勤」が区別できないように、
実際の「退勤」と休憩開始の「退勤」も区別できないと思います。
「退勤」を入力せずに帰宅してしまったとか、ありませんか?
 

回答
投稿日時: 23/04/16 12:57:14
投稿者: 半平太

そもそも データに誤りがあったら正確な処理は期しがたいが、
E列に異常メッセージを出すようにしたら少しは救われるかも知れない。
 
D2セル =IF(A2="","",IF(OR(A1<>A2,A2<>A3),B2,IF(B1<>B2,IF(B2="退勤","休憩開始","休憩終了"),"")))
 
E2セル =IF(A2="","",IF(AND(A1<>A2,B2<>"出勤"),"出勤じゃない",IF(AND(A2<>A3,B2<>"退勤"),"退勤じゃない",IF(B1=B2,B2&"が連続",""))))
 
各数式を下にコピー
 
F2セル =SUM(SUMIF(D:D,{"出勤","退勤"},C:C)*{-1,1})-G2
G2セル =SUM(SUMIF(D:D,{"休憩終了","休憩開始"},C:C)*{1,-1})
 
<結果図>

行 __A__ __B__ __C__ ____D____ _______E_______  ____F____ ____G____
 1                             目視チェック必要  労働時間  休憩時間 
 2  4/15 出勤   9:00 出勤                        ########     14:00
 3  4/15 退勤  10:00 休憩開始               
 4  4/15 出勤  11:00 休憩終了               
 5  4/15 退勤  12:00 休憩開始               
 6  4/15 出勤  13:00 休憩終了               
 7  4/15 出勤  13:05           出勤が連続   
 8  4/15 退勤  14:00 退勤                   
 9  4/16 退勤   9:00 退勤      出勤じゃない 
10  4/16 退勤  10:00           退勤が連続   
11  4/16 出勤  11:00 休憩終了               
12  4/16 退勤  12:00 休憩開始               
13  4/16 出勤  13:00 休憩終了               
14  4/16 出勤  13:05           出勤が連続   
15  4/16 出勤  14:00           出勤が連続   
16  4/16 出勤  14:00 出勤      退勤じゃない 

投稿日時: 23/04/16 15:49:16
投稿者: SURT

ありがとうございます
 
一日に出勤と退勤は一度なので
その間の出退勤を休憩にしたい
日と時間でソートされているので、最初の出勤が実際の出勤で
最後の退勤が実際の退勤です
そのあいだの出退勤に時間をみて休憩開始と休憩終了いうフラグを立てたいです

回答
投稿日時: 23/04/16 22:48:39
投稿者: 半平太

なんか返信の内容がピンとこないのですが、私の案はどうだったんですか?

投稿日時: 23/04/17 16:19:37
投稿者: SURT

半平太さん
教えていただいたのが、返信に書いたことができるものでした
よく理解できずに、やりたいことと違ったことだと勘違いしていたようです
ありがとうございました

トピックに返信