[[20100719001927]] 『平日と土日祝日で時給単価が異なる場合の計算』(miko) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『平日と土日祝日で時給単価が異なる場合の計算』(miko)

前回は、https://www.excel.studio-kazu.jp/kw/20100701125910.htmlにてお世話になりました。

 タイムカードn時間を元に、パートの給与計算表を作っています。

 「平日昼」「平日夜」「土日祝昼」「土日祝夜」「深夜」ごとに時給が異なるため、
それぞれの労働時間を算出できる表がつくりたいです。

 行 __A__ __B__ __C__ __D__ ___E___ ___F___ ___G___ ____H____ ____I____ __J__

   1 出勤  退勤  出勤  退勤  時間計  昼勤務  夜勤務  深夜勤務  休憩           
   2 16:46 22:34 17:00 22:30 5:30            5:00    0:30                     
   3 10:53 19:04 11:00 19:00 8:00    6:00    2:00              1:00           
   4 16:44 23:15 16:45 23:15 6:30    0:15    5:00    1:15      0:30           
   5 17:30 1:00  17:30 25:00 7:30            4:30    3:00      0:45           
   6                         -                                 --             
   7                                                                          
   8                                                

 ・ C2セル =IF(A2="","",CEILING(A2,TIME(,15,)))

 ・ D2セル =IF(B2="","",FLOOR(B2,TIME(,15,))+(B2<A2))

 ・ E2セル =IF(COUNT(A2:B2)<2,"-",D2-C2)

 ・ F2セル =IF(E2="-","",ROUND(MAX(0,MIN(D2,"17:00")-C2),14))
 ・ G2セル =IF(E2="-","",ROUND(MAX(0,MIN(D2,"22:00")-MAX(C2,"17:00")),14))
 ・ H2セル =IF(E2="-","",ROUND(MAX(0,D2-"22:00"),14))

 
 ここまでは良いのですが、この後曜日を自動的に読み取って、それぞれの合計労働時間を出す方法はありますか?

 教えてください。

     Excel2007,  Windows Vista,


 1.日付がどこにあるか分からないと、具体案が書けません。
   考え方としては、土日祝かどうかを判断して分岐処理することになります。
   1例を挙げれば、Workday()関数を使って、当該日の1日前から見て、1日後が当日と同じか?
   なんてことで分岐判断ができます。

 2.祝日リストが必要なので、それをどこに書くことにするか決定してください。
   (どのシートのどの列か?)

 3.新しい項目名を含んだレイアウトを示して頂くと進行がスムーズになると思います。

 ※バージョンはExcel2007だったんですねー。
  条件付き書式を利用して0:00を出さない様にすれば、
  Round()を噛ませる必要はなかったです。 m(__)m
  これも、今回改善します。

 (半平太) 2010/07/19 10:50

>半平太さん

前回はありがとうございました^^
今回も書き込み助かります!!

行  __A__ __B__ __C__ __D__ ___E__  __F__  __G__  ___H___  ___I___   ___J___

   1 日付 曜日 出勤  退勤  出勤   退勤  時間計 昼勤務  夜勤務  深夜勤務             
   2  1   月  16:46 22:34 17:00  22:30  5:30           5:00     0:30                     
   3  2  火  10:53 19:04 11:00  19:00  8:00   6:00    2:00                        
   4  3  水  16:44 23:15 16:45  23:15  6:30   0:15    5:00     1:15                
   5       17:30  1:00 17:30  25:00  7:30           4:30     3:00                
   6                           -                                    --             
   7                                                                          
   8           
   ・
  ・
  ・
  32 31  水 
 33 平日昼計                           
 34 日祝昼計
 35 平日夜計
 36 日祝夜計
 37 深夜計
 
                                         

1.日付と曜日は、A,B列にあります。 
  

2.祝日のリストは、同じシートの上記の表の右隣に作ろうと思います。
  仮にL列とします。  

3.31日の下にそのまま合計欄をつくる予定です。

うまく説明できなくて申し訳ありません(^^;)
よろしくお願いします!!
  
(miko)


 ↑  
 訂正 

行  __A__ ___B___ ___C___ ___D___ ___E__ ___F___ __G___ ___H___  ___I____  ___J___

   1 日付 曜日 出勤  退勤  出勤   退勤  時間計 昼勤務  夜勤務  深夜勤務             
   2  1   月  16:46 22:34 17:00  22:30  5:30           5:00     0:30                     
   3  2  火  10:53 19:04 11:00  19:00  8:00   6:00    2:00                        
   4  3  水  16:44 23:15 16:45  23:15  6:30   0:15    5:00     1:15                
   5       17:30  1:00 17:30  25:00  7:30           4:30     3:00                
   6                           -                                    --             
   7                                                                          
   8           
   ・
  ・
  ・
  32 31  水 
 33 平日                     :       :
 34 土日祝                                       :       :

 H33に、平日の昼勤務計。
 I33に、平日の夜勤務計。
 H34に、土日祝の昼勤務計。
 I34に、土日祝の夜勤務計。が入るようにしたいです。

(miko)


訂正が入ったようですが、これから出かけますので、旧レイアウトでの回答です。

 1.祝日か否かを判定するには、年月情報が必要なので、A列はシリアル値で入力するものとします。
   (表示形式で1,2,3,・・ とするのは自由です)

 2.時間を表示させるC2:J32の範囲のセルの書式(表示形式)を
    [h]:mm;@
   と設定。

 3.0:00を非表示にするため、時間を表示させるセルの「条件付き書式」を以下の通り設定します。
   「数式を使用して、書式設定するセルを決定」で
     「次の数式を満たす場合に値を書式設定」のボックスに
       =TEXT(C2,"[h]:mm")="0:00"
     と入力し、

    セルの書式の設定の(表示形式)タブを開いて
    分類を「ユーザー設定」を選択し、種類(T)ボックスに
     ;;;
    とセミコロンを3つ入力。

 4.数式
 (1) E2セル =IF(C2="","",CEILING(C2,TIME(,15,)))
 (2) F2セル =IF(D2="","",FLOOR(D2,TIME(,15,))+(D2<C2))
 (3) G2セル =IF(COUNT(C2:D2)<2,"-",F2-E2)
 (4) H2セル =IF(G2="-","",MAX(0,MIN(F2,"17:00")-E2))
 (5) I2セル =IF(G2="-","",MAX(0,MIN(F2,"22:00")-MAX(E2,"17:00")))
 (6) J2セル =IF(G2="-","",MAX(0,F2-"22:00"))
 (7) B33セル =SUMPRODUCT((COUNTIF(L:L,A$2:A$32)=0)*(WEEKDAY(A$2:A$32+6)<6),H$2:H$32)
 (8) B34セル =SUMPRODUCT(SIGN(COUNTIF(L:L,A$2:A$32)+(WEEKDAY(A$2:A$32+6)>5)),H$2:H$32)
 (9) B35セル =SUMPRODUCT((COUNTIF(L:L,A$2:A$32)=0)*(WEEKDAY(A$2:A$32+6)<6),I$2:I$32)
 (10) B36セル =SUMPRODUCT(SIGN(COUNTIF(L:L,A$2:A$32)+(WEEKDAY(A$2:A$32+6)>5)),I$2:I$32)
 (11) B37セル =SUM(J2:J32)

<結果図>

 行 ____A____ __B__ __C__ __D__ __E__ __F__ ___G___ ___H___ ___I___ ____J____ _K_ ____L____
  1 日付      曜日  出勤  退勤  出勤  退勤  時間計  昼勤務  夜勤務  深夜勤務      2010/7/19
  2 2010/7/1  木                            -                                              

 15 2010/7/14 水                            -                                              
 16 2010/7/15 木                            -                                              
 17 2010/7/16 金    16:46 22:34 17:00 22:30 5:30            5:00    0:30                   
 18 2010/7/17 土    10:53 19:04 11:00 19:00 8:00    6:00    2:00                           
 19 2010/7/18 日    16:44 23:15 16:45 23:15 6:30    0:15    5:00    1:15                   
 20 2010/7/19 月    17:30 1:00  17:30 25:00 7:30            4:30    3:00                   
 21 2010/7/20 火                            -                                              

 31 2010/7/30 金                            -                                              
 32 2010/7/31 土                            -                                              
 33 平日昼計  0:00                                                                         
 34 日祝昼計  6:15                                                                         
 35 平日夜計  5:00                                                                         
 36 日祝夜計  11:30                                                                        
 37 深夜計    4:45                                                                         

 (半平太) 2010/07/20 12:10

 A列の日付がシリアル値で
 祝日の場合、B列が「祝」と表示されてもよければ

 B2 =IF(A2="","",IF(COUNTIF(L:L,A2),"祝",TEXT(A2,"aaa")))  B32までコピー

 B33 =SUM(H2:H32)-B34
 B34 =SUM(SUMIF(B2:B32,{"土","日","祝"},H2:H32))

 夜計も同じ要領で

 ところでA列の日付はオートフィル? 数式?

 (トーリス・ガーリ)


 トーリス・ガーリさんのアイデアがいいですね ^^

 私の出る幕は無いので、ドロップアウトします。 m(__)m

 (半平太) 2010/07/21 08:49

半平太さん、トーリス・ガーリさん、ありがとうございます!!

これでうまくいきそうです^^

>ところでA列の日付はオートフィル? 数式?

Excelの用語がわからないのですが、手入力してます。。。
7/1と入れて「1」と表示するようにしてます。

翌月以降のことを考えると、
別の方法に変えた方が良いのでしょうか(^^;)

(miko)


 > 手入力してます。。。 7/1と入れて「1」と表示するようにしてます。 

 へ? 手入力? 手入力って、一個一個全部?
 もしかしてA列には出勤した日だけを入力してるってこと?
 サンプルデータでは月末まで全部埋まってるように見えますが。。

 よくわかりませんけど、数式ではないんですね?
 ならいいです。この件は忘れてください。

 (トーリス・ガーリ)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.