Excel2010で土日祝に出勤した日数を計算する方法

このQ&Aのポイント
  • Excel2010で月ごとの勤務表から、土日祝日に出勤した日数を計算する方法を教えてください。
  • 勤務表のA列には年月があり、B列以降には勤務した場合に〇が入力されます。
  • 勤務場所ごとに一人で4列使用し、8人分の勤務表が用意されています。勤務地ごとにダブって勤務することはなく、土日祝日の勤務日数を勤務者ごとに知りたいです。
回答を見る
  • ベストアンサー

Excel2010 土日祝に出勤した日数を計算

教えてください。 今、月毎の勤務表があります。A列には別セルの年月を参照して、日(曜日)が1日~31日(日数は月毎に変わります。)B列以降には勤務した場合に〇を入力します。ただし勤務の場所が4か所あるので、勤務場所ごとに一人で4列使用します。それが8人用用意されています。表にすると次のようです。 同じ勤務地にはダブって勤務することはないので、1(金)の例ではA氏がB地に勤務すると、B氏他はそれ以外の勤務地になります。教えてほしいのは、このような勤務状態の土日祝の勤務日数を、勤務者ごとに知りたいのです。尚、祝日は別シートに一覧として記載しております。 下表は位置合わせのスペースは無視されて詰まってしまうので―で位置合わせしているもので質問に対する意味はありません。 -----|-----A氏------|-----B氏-----| ~ -------a地--b地--c地--d地--a地--b地--c地--d地 列→-- A--B---C---D---E---F---G---H---I~ ---1(金)-----〇----------〇 ---2(土)--〇---------------- 〇 ---3(日)---------〇------------------〇 -祝日4(月)-------------〇----------〇 ---5(火)-----〇------------------〇 ---以下省略 以上よろしくお願いします。

noname#194986
noname#194986

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

 今仮に、 >A列には別セルの年月を参照して、 という箇所に記述されている「別のセル」がA1セルであり、A1セルの書式設定の表示形式が、 yyyy"年"m"月" となっていて、そこに例えば 2012/10/1 と入力しますと、 2012年10月 と表示されるものとします。  又、A3以下には 1(月) とか、 祝日8(月) といった形式で、日付と曜日、及び「祝日か否かの区別」を表示するものとします。  又、祝日のリストがAL列に入力されているものとします。  又、B1~AG1に、「A氏」~「H氏」といった各勤務者の氏名が、3列おきに並んでいるものとします。  又、AI2以下に「A氏」~「H氏」といった各勤務者の氏名が並んでいて、その右隣のAJ2以下に各勤務者の休日出勤の日数が表示されるものとします。るものとします。  まず、A1セルの書式設定の表示形式を[ユーザー定義]の yyyy"年"m"月" として下さい。  次に、A3セルに次の関数を入力して下さい。 =IF(ISNUMBER(1/(MONTH(TEXT($A$1,"yyyy/m/d")+ROWS($A$3:$A3)-1)=MONTH(TEXT($A$1,"yyyy/m/d")+0))),IF(COUNTIF($AL:$AL,(TEXT($A$1,"yyyy/m")&"/"&ROWS($A$3:$A3))+0),"祝日","")&TEXT((TEXT($A$1,"yyyy/m")&"/"&ROWS($A$3:$A3))+0,"d(aaa)"),"")  次に、A3セルをコピーして、A4~A33の範囲に貼り付けて下さい。  次に、AI2セルに次の関数を入力して下さい。 =INDEX($1:$1,COLUMN($A$1)+1+(ROWS($AI$2:$AI2)-1)*4)&""  次に、AJ2セルに次の関数を入力して下さい。 =IF($AI2="","",SUMPRODUCT(COUNTIFS(OFFSET($A:$A,,MATCH($AI2,$1:$1,0)-COLUMN($A$1)+INT((ROW(INDIRECT("A1:A"&4*3))-1)/3)),"〇",$A:$A,LOOKUP(MOD(ROW(INDIRECT("A1:A"&4*3))-1,3)+1,{1,2,3;"*(日)","*(土)","祝日*"}),$A:$A,"<>"&LOOKUP(MOD(ROW(INDIRECT("A1:A"&4*3))-1,3)+1,{1,2,3;"祝日*","祝日*",""}))*1))  次に、AI2~AJ2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。  これで、各勤務者の休日出勤日数が自動的に表示されます。  因みに、AJ2セルに入力する関数の中の「4*3」という箇所は「a、b、c、dの4地点」×「土、日、祝日という3種類の休日」を表しています。

noname#194986
質問者

お礼

回答ありがとうございます。図まで作成して戴きましてお手数おかけしました。まさにこの通りで私の表を見られた気分です。 早速確認しましたがA氏の4列の休日(土日祝)マーク(〇)しかカウントしません。B氏~H氏までの休日は〇を入力してもカウントしません。 実際には列番号などは違うのですがKagakusukiさんの図の通り再現して確認しました。何か違う所がるのでしょうか。何回も済みませんがよろしくお願いします。

noname#194986
質問者

補足

以下にB氏~H氏はできない旨記載しましたその後できました。ありがとうございました。

その他の回答 (4)

回答No.4

<<訂正>>データの先頭を3行目に訂正 話を簡単にするためにデータは1人分として、作業列をGとHにしてある。実際はシート8人のようなので作業列の位置は調整必要。 その日が休日扱いになることをマークするためと、勤務があったことをマークするために2つの作業列を使う。(勤務のマークは人数分の列が必要) 休日扱いとなるものを調べる。休日は、土日とそれ以外での祝日(振替え休日)、土日はすべて休日扱い。 祝日は、祝日を列挙した以下のHolidayシートをVLOOKUP関数で照合する。 Holidayシートはもっと大きくても構わない。例えば複数年に対応するものでも良いが、検索範囲は調整必要。 G列:休日マーク("H") =IF(WEEKDAY($A3,2)>5,"H",IF(ISNA(VLOOKUP($A3,Holiday!$A$1:$A$19,1,FALSE)),"","H")) その日に勤務したかは、勤務地のマーク(例えばB~E列)を文字列合成)したものが、空白か○かで判断できる。(間違って複数のマークがあった場合、エラーとすることも可能) H列:各人の勤務マーク("○") =LEFT(B3&C3&D3&E3,1) 結局、休日扱いの日に、勤務のマークがある数を数えることになる。 =SUMPRODUCT(($G3:$G33="H")*($H3:$H33="○")) <<8人分は面倒だが、まとめて下方向にコピー可能>> Holidayシート: A列に祝日(振替え休日になる場合はそちら)を列挙、(土)と重なるものがあっても問題ない。 1月2日(月) 1月9日(月) 2月11日(土) 3月20日(火) 4月30日(月) 5月3日(木) 5月4日(金) 5月5日(土) 7月16日(月) 9月17日(月) 9月22日(土) 10月8日(月) 11月3日(土) 11月23日(金) 12月24日(月) 休日 出勤 5 ←10月の休日扱い勤務日数(各人) 10月1日(月) ○ ○ 10月2日(火) ○ ○ 10月3日(水) ○ ○ 10月4日(木) ○ ○ 10月5日(金) ○ ○ 10月6日(土) ○ ○ H ○ 10月7日(日) H 10月8日(月) ○ ○ H ○ 10月9日(火) ○ ○ <<以下、省略>>

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

複雑な式を使うこともなく分かり易い、作業列を設けて対応する方法です。 シート2のA列には祝日が入力されているとします。 シート1では次の作業を行います。 A1セルには例えば2012/10/1と入力してセルの表示形式ではユーザー定義で yyyy年m月 として2012年10月のように表示させるとします。 A3セルには次の式を入力して下方にドラッグコピーします。 =IF(MONTH(A$1+ROW(A1)-1)<>MONTH(A$1),"",A$1+ROW(A1)-1) セルの表示形式はユーザー定義で d日(aaa) と入力して1日(月) のように表示させます。 氏名の8人をB1セル、F1セル、J1セル・・・・とAD1セルまで入力します。 勤務場所はそれぞれの氏名ごとにa,b,c,dと2行目に入力します。3行目から下方には勤務した場合には○を入力するとします。 そこで作業列ですがAH3セルには次の式を入力して下方にAH33セルまでドラッグコピーします。 =IF(A3="","",IF(OR(WEEKDAY(A3,2)>=6,COUNTIF(Sheet2!A:A,A3)>0),IF(COUNTIF(B3:E3,"○")>0,"A","")&IF(COUNTIF(F3:I3,"○")>0,"B","")&IF(COUNTIF(J3:M3,"○")>0,"C","")&IF(COUNTIF(N3:Q3,"○")>0,"D","")&IF(COUNTIF(R3:U3,"○")>0,"E","")&IF(COUNTIF(V3:Y3,"○")>0,"F","")&IF(COUNTIF(Z3:AC3,"○")>0,"G","")&IF(COUNTIF(AD3:AG3,"○")>0,"H",""),"")) お求めの表をA39セルからB47のセル範囲に作るとしてA39セルには氏名の項目名を、B39セルには休日勤務日数と入力します。 A40セルから下方には氏名を入力します。 B40セルには次の式を入力して下方にドラッグコピーします。 =IF(A40="","",COUNTIF(AH:AH,"*"&A40&"*"))

回答No.2

その日が休日扱いになることをマークするためと、勤務があったことをマークするために作業列を使う。 休日は、日付毎に土日とそれ以外での祝日(振替え休日)か調べる。 土日はすべて休日扱いにマーク("H") =WEEKDAY($A2,2)>5 祝日はVLOOKUP関数でできる。(Holidayシートに祝日を列挙する) その他はヒットした場合だけ休日扱いにマーク("H") =VLOOKUP($A2,Holiday!$A$1:$B$19,2,FALSE) その日に勤務したかは、勤務地のマーク(例えばB~E列)を文字列合成(=LEFT(B2&C2&D2&E2,1))したものが、空白か○かで判断できる。 結局、休日扱いの日に、勤務のマークがある数を数えることになる。 G列:休日扱いマーク("H") H列:勤務マーク("○") =SUMPRODUCT(($G2:$G32="H")*($H2:$H32="○"))

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

添付図: 簡単のためA列に年/月/日で日付を記入(必要に応じて表示形式で日のみ表示にしておいてよい) B列に曜日列を準備 B3: =IF(A3="","",IF(COUNTIF(祝日一覧,A3),"祝",TEXT(A3,"aaa"))) 以下コピー A氏の土日祝出勤数: =SUMPRODUCT((($B$3:$B$33="土")+($B$3:$B$33="日")+($B$3:$B$33="祝"))*(C3:F33<>"")) #参考 曜日列をどうしても設けたくない場合: =SUM(IF($A$3:$A$33<>"",((WEEKDAY($A$3:$A$33,3)>4)+COUNTIF(祝日一覧,$A$3:$A$33))*(C3:F33<>""))) と記入し、コントロールキーとシフトキーを押しながらEnterで入力する ただし31日が無い月の31日のセルには""(空白)を計算して置く事。

関連するQ&A

  • Excel関数で休日出勤日数を計算

    図のようなフォーマットで勤務表を作ってます。 C13セルからE15に関数を入れて、出勤者ごとに休日出勤する日数をカウントしたいです。 休出かそうでないかはB列で判断します。 B列に「休」と入っている日が休日で、休日が「休」でなかったら休日出勤です。 この例ではそれぞれ山田さんは0日、田中さんは1日、鈴木さんは3日の休日出勤があります。 C13セルからE15にどんな関数を入れたらいいでしょうか? このフォーマットはある程度変えてかまいません。 また作業用のセルもある程度使ってかまいません。 シンプルでわかりやすいやり方だとうれしいです。 よろしくお願いします。

  • エクセル 出勤しなければならない日数

    いつもお世話になっています。 現在、勤怠表の月別集計表を作っています。 出勤しなければならない日の計算がうまくいきません。 C2・・・2012/4/1 D2・・・2012/5/1 E2・・・2012/6/1 ・ ・ ・ C2から右へ月の一日の日を記載し、書式設定で月のみ表示させています。 会社の休みは日曜・祝日と指定された日です。 別シートに祝日の一覧と指定された休みの一覧を作り、 祝日→「祝日」 指定休み→「休日」 と名前(名前の定義)を付けました。 C4には4月の、D4には5月の・・・・ 出勤しなければならない日数を表示させたいです。 自分なりに色々試してみたのですが、 上手くいきません。 宜しくお願い致します。 OS:win7 office:2010

  • Excel2007で土日祝17時以降の勤務時間表示

    タイムカードの計算をしています。 土日祝の17時以降の勤務時間のみを表示させ、最後にその時間の合計を表示させたいです。 日付と曜日のB列、C列は別シートのカレンダーから参照させており、 カレンダーシートのB4に =IF(MONTH(A4)>$D$1,"",A4) ※A4には年月日が、D1には月が入っています。 カレンダーシートの曜日は =IF(B4="","",CHOOSE(WEEKDAY(B4,1),"日","月","火","水","木","金","土")) と入力しています。 また、カレンダーシートは年月を変えると祝日や曜日が変わるようにしており、 それらの曜日や日付けで条件付き書式を設定し文字色が変わるようにしています。 祝日は「祝日」シートで各年毎に「祝日11」等と設定しています。 で、本題ですがP列の17時以降の勤務時間を土日祝のみ表示させ、 その合計時間をP34に表示させたいのです。 分かりにくいかもしれませんが、ご教授お願いいたします。

  • Excel2013で出勤簿・賃金計算書の作成

    Windows 8.1 Excel 2013で各月の出勤簿から賃金計算をしておりました。 これまでごOKWAVEで指導を頂きながら順調に出来ましたが、問題が発生致しました。 ここからが質問ですが、ご指導をお願い致します。 只今、作業中のExcelの表を掲載し説明を受けるのが筋ですが、Excelの表の掲載方法が判らないため長文になりますが文書にて質問させて頂きます。 Excelの表の各列・各行・セルの状況は下記の通りで、計算式(関数)が入っています。 7行目は項目が入っており、 A列は月日・B列は曜日・C列は始業時刻・D列は終業時刻・E列は休憩時間・F列は勤務時間 ・G列は時間内勤務時間・H列は時間外勤務時間・I列は時間内支給額・J列は時間外支給額となっています。 8行目から5月1日~38行目が5月31日となっています。 B列の曜日には、関数(=TEXT(A8,"aaa")(以下関数を示します)が入っており、A列に2016/5/1と入力すれば、自動的にB列に日曜日と表示されます。 C列・D列・E列の各セルの勤務時間は、手動で入力します。 F列の勤務時間には、5:00と入力し、=IF(COUNT(C9:D9)=2,D9-C9-E9,0) G列の時間内勤務時間には、12:00と入力し、=IF(B9="日",0,MIN($F$45,F9))保護あり H列の時間外勤務時間には、=F9-G9保護あり I列の時間内支給額には、=G9*24*$E$42保護あり J列の時間外支給額には、=IF(B9="日",H9*24*$E$43,H9*24*$E$44) 保護あり A列・B列は入力後、保護する。 C列・D列・E列は保護せず、手入力のみです。 それ以外は、関数が入っているので保護あり 40行以降は、セルごとに関数が入っています。 C41セルに全勤務労働時間として、=SUM($F$8:$F$38) F41セルに全勤務労働時間として、=SUM($F$8:$F$38) C42セルに定時労働時間として、=SUM($G$8:$G$38) G42セルに定時労働時間として、=SUM($G$8:$G$38) I42セルに時間内支給額として、=SUM($I$8:$I$38) C43セルに休日労働時間として、 H43セルに時間外勤務時間として、=$C$43 J43セルに時間外支給額として、=SUMIF($B$8:$B$38,$D$43,$J$8:$J$38) C44セルに早出労働時間として、=SUM($H$8:$H$38)-$C$43 H44セルに時間外勤務時間として、=SUM($H$8:$H$38)-H43 J44セルに時間外支給額として、=SUM($J$8:$J$38)-$J$43 C45セルに勤労日数として、=COUNT($C$8:$C$38) F45セルに契約時間として、固定で08:00 J45セルに定時労働時間支給額として、=I42 J46セルに休日労働時間支給額として、=J43 J47セルに早出労働時間支給額として、=J44 J48セルに総支給額合計として、=SUM(J45:J47) D43セルに休日労働時間検索のための、日 時給関係は、  E42セルに定時労働時間時給として、769円(変更があるので、保護せず)  E43セルに休日労働時間時給として、1,039円(変更があるので、保護せず)  E44セルに早出労働時間時給として、962円(変更があるので、保護せず) 現在、入力されている関数等は上記の通りです。 参考事項ですが、 日曜日以外は、平日の時給と同額で自動的に計算するように公式を入れていましたが、この度、祝日も日曜日と同額で計算するように関数を入れたいのですが、良い方法があればご指導をお願い致します。 勝手を申しますが、よろしくお願い致します。 説明不足で理解し難いかもしれませんが、よろしくお願い致します。 長文になりましたがご容赦下さい。 よろしくお願い致します。

  • EXCELで休日出勤を計算する

    お世話になります。 知恵をお貸しいただければ幸いです。 EXCELでひと月ごとのの出勤報告書を作っています。 そこで、休日(土、日、祝)出勤手当てを支払われる日が何日あるかを自動表示させようとしています。 今のシートの構成は A列:日付(2008/9/1の形で入力し、「1」のように表示 A5:A35) B列:曜日(A列から参照し、表示形式でaaaとし「月」のように表示) C列:休日(仕方なく手入力で「休」と入れている) D列:休日出勤したか判定(=IF(OR((C5>0)*(E5>0)),"休出","")C列とE列とも入力された場合に休日出勤とし「休出」と表示) E列:出勤した日はその日の仕事内容を入力 D列の最下部で「休出」が何回あるかカウント(=COUNTIF(D5:D35,"休出")) 祝日は関数が無いので、祝日一覧を作り該当する日付から祝日を割り出すのは分かったのですが。 =IF(WEEKDAY(A5)=1,"休","")&IF(WEEKDAY(A5)=7,"休","") よろしくお願いします。

  • 土日祝を空白にする関数を教えてください

    エクセルの関数を使い、勤務管理表の始業時間を設定したいと思います。 月~金曜日までの始業時間を 8:00と入力し、土曜・日曜・祝日は空白にしたいです。 ちなみに土曜・日曜・祝日と曜日の色分けまでは、できました。 セルA1~A30に日付を入力して、B1~B30に始業時間とすると B1~B30に入力する関数はどのようなものになるのでしょうか? よろしくお願いします。

  • 【Excel97】経過日数の計算で、土日・祝日を抜かして計算したい

    表記のとおりです。 「○○月○○日~○○月○○日」という日数計算を出してくて、今はただ引き算で経過日数を出してるだけなんです。そうすると必要のない土日や祝日も入ってしまうので、それを除いた経過日数を出す関数はどのようにすればいいのでしょうか。 私は関数にはうとくて、「こういう数式にすれば」また「こういう表示形式にすれば」と具体的に教えていただけれると嬉しいです。

  • EXCEL関数がよく分からないのです…

    日付 A   B  C   D 2/1  100  10  90  90 2/2  80  20  60  75 2/3  140  20  120  90 2/4   90  30   60   82.5 上の表で、C=A-Bです。 Dは、Cの累計を、相当する日数で割ったものです(2/3までの累計なら3で割り、2/4までの累計は4で割る、という具合に…)。 このDをEXCELの関数を使って算出できるようにしたいのですが、どうすればよいのでしょうか? 尚、この表は一か月単位で作る予定です。 また、C列は表示の必要がなく、A,B,D だけの表の方が好都合です。

  • エクセルで残り日数を計算させる

    エクセルで関数を使用し10/1までの残り日数を表示させたいのですが どのような計算式を作成すれば宜しいでしょうか? A1に4月20日と記入した場合  A列に月日を記入しB列に残り日数を表示させたいです。   A列     B列 3 4月13日   7日 4 5 4月15日   5日     ・    ・     ・    ・  このようになる関数を教えて下さい。

  • 日曜&祝日を除く7営業日後(EXCEL)

    EXCEL初心者です EXCEL2007(12.0.6654 5503)SP2を使用しております もしわかりましたら教えてください A   B    C     D 1 2012/6/1  2012/6/9    11日目  2012/6/21   2 2012/6/4  2012/6/12    9日目 3 2012/6/9  2012/6/18    4日目 (1)セルA列に日付がはいってます  セルB列にセルA列の7営業日後(日曜、祝日は休み。土曜日は営業)  を自動的に表示されるようにしたい (2)セルD1には今日の日付がはいってます  セルC列にB列の日付から今日まで何日経ったか、営業日の日数(日曜、祝日は休み。土曜日は営業)  で自動的に表示されるようにしたい 説明がわかりずらかったらすみません 補足しますのでその旨記載お願いします

専門家に質問してみよう