• 締切済み

勤務数をカレンダーでカウントするEXCELシート

 私の会社は給与20日締の当月25日払いです。日曜、祝日、第2,4土曜と 年末29、30、31、1、2、3が休みです。4月21から5月20の分を5月25日 に5月分給与として支払うのですが、例えば5月2日に途中入社した社員の出勤数は 上記休みを除いた日をカレンダーを見ながら数えるのですが    これを入社年月日を入力しただけで出勤数がすぐかえってくるEXCELシートを作りたいのです。 関数に詳しくなく分かりません。 詳しい方どうか教えていただけないでしょうかお願いします

みんなの回答

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

例えばシート1は次のようにして、シート2でお求めのデータを表示させることにします。 シート1ではA1セルに日付、B1セルに休日、C1セルに祝日や年末年始休みなどの文字を入力します。 A2セルから下方には今年の4月1日からの日付を表示させるのでしたら2011/4/1と入力して下方にオートフィルドラッグします。 C2セルから下方には年末年始の休暇日や祝日などを入力します。これらの日付は2011/1/1のように年を付けた入力とします。というのは祝日は年によって日にちが違うことがあるからです。 B2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(OR(COUNTIF(C:C,A2),WEEKDAY(A2)=1,OR(AND(WEEKNUM(A2)-WEEKNUM(DATE(YEAR(A2),MONTH(A2),1))=1,WEEKDAY(A2)=7),AND(WEEKNUM(A2)-WEEKNUM(DATE(YEAR(A2),MONTH(A2),1))=3,WEEKDAY(A2)=7))),"休日","") これで日曜日やその月の第2第4土曜日なども当然休日として表示されます。 そこでシート2ですがA1セルには給与計算年月とでも文字を入力し、B1セルには今年の5月の計算(4月21日から5月20日まで)をするのでしたら平成23年5月と入力します。 A2セルには氏名、B2セルには入社年月日、C2セルには該当月の出勤日数とそれぞれ文字を入力します。 その後にC3セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A3="","",DATEDIF(MAX(B3,DATE(YEAR(B$1&"21日"),MONTH(B$1&"21日")-1,21)),DATE(YEAR(B$1&"20日"),MONTH(B$1&"20日"),20),"MD")+1-COUNTIF(INDEX(Sheet1!B:B,MATCH(MAX(B3,DATE(YEAR(B$1&"21日"),MONTH(B$1&"21日")-1,21)),Sheet1!A:A,0)):INDEX(Sheet1!B:B,MATCH(DATE(YEAR(B$1&"20日"),MONTH(B$1&"20日"),20),Sheet1!A:A,0)),"休日")) 一度こちらが提案した通りでぜひ試験してみてください。

関連するQ&A