• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:労基法の週40時間を超える時間を計算するため、日曜日を起点とする1週間)

労基法の週40時間を超える時間を計算するための勤務実績表とは?

このQ&Aのポイント
  • 労基法の週40時間を超える時間を計算するための勤務実績表(12Sheet)があります。
  • 最終週の末日が土曜日でない場合、翌月に繰り越す就労日数を集計する必要があります。
  • 月によって曜日が異なるため、同じ関数式を入力する方法を知りたいです。また、前月繰越がある月の初週の計算式も統一したいです。

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

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

初めに4月から翌年の3月までのシートをシート1からシート12までに作成するとします。 そこでシート見出しでSheet1をクリックしてからShiftキーを押しながらSheet12をクリックします。これですべてのシートが同じ作業グループとなります。 そこで次の操作はシート1で行います。 A1セルには2010/4/1と入力してからセルの表示形式の日付で2010年4月と表示させます。 A2セルには前月繰越と入力します。 C2セルには次の式を入力します。 =INDIRECT("Sheet"&SUBSTITUTE(TRIM(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,10)),"Sheet","")-1&"!D34") この式を入力した時点ではエラー表示になってしまうでしょう。しかしそのままにします。実はこの式は前月シートのD34セルのデータを表示させるための式でシート1ではエラーとなりますが後ほど、作業グループの解除を行った後に、シート1については実際のデータで数値を入力することにします。 A3セルには次の式を入力してA33セルまでオートフィルドラッグします。 =IF(A$1="","",IF(MONTH(A$1+ROW(A1)-1)<>MONTH(A$1),"",A$1+ROW(A1)-1)) これでその月に応じた末尾までの日にちが表示されます。セルの表示形式は4月1日などとします。 次にB3セルには次の式を入力してB33セルまでオートフィルドラッグします。 =IF(A3="","",TEXT(A3,"aaa")) D3セルには次の式を入力してD33セルまでオートフィルドラッグします。 =IF(OR(B3<>"土",B3=""),"",IF(ROW()=3,C2+C3,SUM(C$2:C3)-SUM(D$2:D2))) A34セルには次月繰越の文字を入力しD34セルには次の式を入力します。 =SUM(C$2:C33)-SUM(D$2:D33) これでシート1からシート12には同じ式や文字が入力されました。この後はシート見出しを右クリックして「作業グループの解除」を選択します。この操作は必ず行ってください。 その後にシート1のC2セルには32.0などの数値を入力します。 なお、各シートには4月の表示がされていますが各シートでA1セルには5月のシートすなわちシート2のA1セルには2010/5/1と入力してください。2010年5月と表示されその月の日付が自動的に表示されるでしょう。 ここで示した方法を新しいブックなどで試験してください。ご参考になりましたら幸いです。

doubt34
質問者

お礼

不在のためレスポンスが遅れ、申し訳ありません。 丁寧かつ懇ろなご回答、心からお礼申し上げます。 最初のお答えのうち、作業グループを作っての一括作業や、曜日を表す関数、あるいはシートネームを現す関数などはずっと以前から使っておりますが、問題はお示しの次の式です。 =INDIRECT("Sheet"&SUBSTITUTE(TRIM(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,10)),"Sheet","")-1&"!D34") この数式は、シート名が、昇順で「Sheet1」から「Sheet12」までとなっていることを前提にしたご回答だったみたいですね。 実は最初質問の際にシート名のことを記述していればよかったのですが、それを省いたのが私の手落ちでした。 実際のシート名は「1004」「1005」~「1302」「1303」と年月を簡略化した3年分の名称にしておりまして、しかも作業の都合でシート順を随時入れ替えたり、中途で半年計や年度計のシートが入ったり、シートを非表示にしたりすることなどもありますので、ご教示の式では答えがエラー(#REF!)になってしまいます。 そこで私は別シートに下表を作って挿入→名前で「前月シート」と命名し、C2に次の式を入力することにして答えを出すことにしました。 A列    B列 1105   '1004'!D34 1106   '1005'!D34      中略 1302   '1301'!D34 1303   '1302'!D34 (C2の式) =INDIRECT(VLOOKUP(VALUE(MONTH(A1)),前月シート,2)) 尤も、この方法を考える過程で、ご教示の数式が間接的なヒントになり、何かと参考になりました。 D3セルへの数式(No6回答)は、mt2008さんのNo3及びNo4ご回答と同様なので、補足を割愛させていただきます。 次に参考までに申し上げますと、まず3年分の36シートですが、最初に左端「Sheet1」のA1~A36までに、年月を数値化した1004から1303までの数値を入力し、フリーソフトの「シート名一覧でシート作成」を使って一度に全シートを作成しました。 次に各シート「A1」の月初日の表示ですが、まずSheet1のB1からB36に、2010/4/1から2013/3/1までの各月初日の日付を入力し、「A1:B36」の範囲を「月初日」と命名し、36シートをアクティブ(作業グループ)にして、A1に次の式を入力し、各月初日を表示することにしました。 =VLOOKUP(VALUE(RIGHT(CELL("filename"),4)),月初日,2) なお、Vlookup関数を使わず、A1に直接次の式を入力しても答えは出ましたが、あまり式が長くなるので、やめました。 =DATE(INT(RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))/100)+100,MOD(RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename"))),1000),1) ところで、理論的には「LEN(CELL(""filename""))-FIND(""]"",CELL(""filename""))」の代わりに、数字の「4」(シート名の文字数)を置き換えてもよいはずなのに、そうすると、作業グループでコピーしたとき何故か各シートとも同じ日付になってしまうことがあります。 この理由がいくら首をひねっても分からないので、もしお分かりでしたらご教示ください。 以上が、ご教示の内容を参考に検討の上、出した結論ですが、検討過程でいろいろと参考になったことを報告してお礼に代えさせていただきます。 ありがとうございました。

doubt34
質問者

補足

先にお礼の中で 「ところで、理論的には「LEN(CELL("filename"))-FIND(""]"",CELL("filename"))」の代わりに、数字の「4」(シート名の文字数)を置き換えてもよいはずなのに、そうすると、作業グループでコピーしたとき何故か各シートとも同じ日付になってしまうことがあります。 この理由がいくら首をひねっても分からないので、もしお分かりでしたらご教示ください。」 と記述しておりましたが、その後再度数式を見直したら、 ("filename")の中の右カッコ「)」の前に「,$A$1」を入れたら正しい答えが出ることが分りましたので、あらためて補足させていただきます。

その他の回答 (5)

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

D3セルへは次の式でよいですね。 =IF(B3<>"土","",SUM(C$2:C3)-SUM(D$2:D2))

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

Ano.3です。 訂正です 誤:私なら、D1に↓をいれ、D33までオートフィルします。 正:私なら、D3に↓をいれ、D33までオートフィルします。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

D34には↓でいいと思います。 =SUM(C2:C33)-SUM(D3:D33) しかしながら、提示されているD3:D33までの式、おかしくないですか? 私なら、D1に↓をいれ、D33までオートフィルします。 =IF(B3<>"土","",SUM(C$2:C3)-SUM(D$2:D2))

doubt34
質問者

お礼

不在のためレスポンスが遅れ、すみません。 ご回答ありがとうございました。 D34及びD列(D3~D33)の式は両方ともお示しのとおりでした。 ちょっと考えれば簡単な足し算引き算の問題なのに、頭が老化していたのでしょう。何か難しく考えすぎていました。 負け惜しみと思われるかも知れませんが、コロンブスの卵みたいに、なーんだそうか、というのが偽らざる心境でお恥ずかしい限りです。 ともあれ、ご教示心から感謝いたします。

  • Sinogi
  • ベストアンサー率27% (72/260)
回答No.2

ちょっとだけ変更 次月以降の表示が無くてもOKにしてみました =IF(MONTH(A3+30)=MONTH(A3),WEEKDAY(A3+30),WEEKDAY(OFFSET(A33,DAY(A3+30)*-1,0)))

doubt34
質問者

お礼

不在のためレスポンスが遅れ、すみません。 ご回答ありがとうございました。 ところが、残念ながらお示しの数式では正答が得られませんでした。 結論だけ申し上げますと、4月分の次月繰越時間数は「54」ですが、お示しの計算式では答えが「6」になってしまいます。

  • Sinogi
  • ベストアンサー率27% (72/260)
回答No.1

D34の式だけですが =IF(MONTH(A33)=MONTH(A3),WEEKDAY(A33),WEEKDAY(OFFSET(A33,DAY(A33)*-1,0))) 但し、A列は33行目まで次月以降の日付を入れておいてください

関連するQ&A