
労基法の週40時間を超える時間を計算するため、日曜日を起点とする1週間毎の労働時間を集計する暦月単位の勤務実績表(12Sheet)があります。
例えば本年4月分のSheetであれば次表(簡略化)のとおりです。
A列 B列 C列 D列
2 前月繰越 32.0
3 4月1日 木 12.5 =IF(B6<>"土","",SUM(C$2:C3))
4 4月2日 金 6.5 =IF(B6<>"土","",SUM(C$2:C4))
5 4月3日 土 10.0 =IF(B6<>"土","",SUM(C$2:C5))
6 4月4日 日 8.0 =IF(B6<>"土","",SUM(#REF))
↓(中略)
26 4月24日 土 7.5 =IF(B6<>"土","",SUM(C20:C26))
27 4月25日 日 9.5 =IF(B6<>"土","",SUM(C21:C27))
28 4月26日 月 11.0 =IF(B6<>"土","",SUM(C22:C28))
29 4月27日 火 8.0 =IF(B6<>"土","",SUM(C23:C29))
30 4月28日 水 7.0 =IF(B6<>"土","",SUM(C24:C30))
31 4月29日 木 9.5 =IF(B6<>"土","",SUM(C25:C31))
32 4月30日 金 9.0 =IF(B6<>"土","",SUM(C26:C32))
33 (空行) =IF(B6<>"土","",SUM(C27:C33))
34 次月繰越 ?
この表の行数はブックを1年単位で作っているため、作業の都合上、月の前後の繰越行を含め33行に統一しています。
さて、質問ですが、最終週の末日が土曜日でないときは翌月に繰り越す就労日数があるので、次月繰越欄(この場合D34)に最終週の日曜から月末までの就労日数を集計する数式を入力する必要があります。このセルに12か月分すべてにあてはまる同じ関数式を入力したいのですが、月によって曜日が異なるため良い知恵が浮かびません。どなたか教えていただけないでしょうか。
ついでに、前月繰越がある月の初週のD列数式もできれば1か月を通じ同じ数式に統一したいのですが、良い方法がありましたら併せてお願いします。
更に、12か月分のSheetをアクティブにして、翌月繰越の数値を、次Sheetの前月繰越セル(この場合C7)に12Sheet一括入力(又は最初の月分を残りの11Sheetにコピー)できる関数式があれば、それについても教えていただければ助かります。
以上の作業は、各月毎に曜日の配置を見て手作業で入力しても大して手数はかかりませんが、実際のブックはスタート月が違うものも含めて多数存在するため、一括した数式を入力できれば作業が容易なのでお尋ねする次第です。
よろしくお願いします。
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月と表示されその月の日付が自動的に表示されるでしょう。
ここで示した方法を新しいブックなどで試験してください。ご参考になりましたら幸いです。
この回答への補足
先にお礼の中で
「ところで、理論的には「LEN(CELL("filename"))-FIND(""]"",CELL("filename"))」の代わりに、数字の「4」(シート名の文字数)を置き換えてもよいはずなのに、そうすると、作業グループでコピーしたとき何故か各シートとも同じ日付になってしまうことがあります。
この理由がいくら首をひねっても分からないので、もしお分かりでしたらご教示ください。」
と記述しておりましたが、その後再度数式を見直したら、
("filename")の中の右カッコ「)」の前に「,$A$1」を入れたら正しい答えが出ることが分りましたので、あらためて補足させていただきます。
不在のためレスポンスが遅れ、申し訳ありません。
丁寧かつ懇ろなご回答、心からお礼申し上げます。
最初のお答えのうち、作業グループを作っての一括作業や、曜日を表す関数、あるいはシートネームを現す関数などはずっと以前から使っておりますが、問題はお示しの次の式です。
=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」(シート名の文字数)を置き換えてもよいはずなのに、そうすると、作業グループでコピーしたとき何故か各シートとも同じ日付になってしまうことがあります。
この理由がいくら首をひねっても分からないので、もしお分かりでしたらご教示ください。
以上が、ご教示の内容を参考に検討の上、出した結論ですが、検討過程でいろいろと参考になったことを報告してお礼に代えさせていただきます。
ありがとうございました。
No.3
- 回答日時:
D34には↓でいいと思います。
=SUM(C2:C33)-SUM(D3:D33)
しかしながら、提示されているD3:D33までの式、おかしくないですか?
私なら、D1に↓をいれ、D33までオートフィルします。
=IF(B3<>"土","",SUM(C$2:C3)-SUM(D$2:D2))
不在のためレスポンスが遅れ、すみません。
ご回答ありがとうございました。
D34及びD列(D3~D33)の式は両方ともお示しのとおりでした。
ちょっと考えれば簡単な足し算引き算の問題なのに、頭が老化していたのでしょう。何か難しく考えすぎていました。
負け惜しみと思われるかも知れませんが、コロンブスの卵みたいに、なーんだそうか、というのが偽らざる心境でお恥ずかしい限りです。
ともあれ、ご教示心から感謝いたします。
No.1
- 回答日時:
D34の式だけですが
=IF(MONTH(A33)=MONTH(A3),WEEKDAY(A33),WEEKDAY(OFFSET(A33,DAY(A33)*-1,0)))
但し、A列は33行目まで次月以降の日付を入れておいてください
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 週毎の集計 2 2023/08/04 16:56
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Excel(エクセル) エクセルの祝日に色が反映しない 4 2022/05/18 09:58
- Excel(エクセル) IF 関数で「〇〇 という文字を含む場合」の分岐処理で表示された数字はSUMで数字集計できますか? 3 2022/08/02 16:29
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Visual Basic(VBA) 列 A に同じ日が2つが必要です。 1 2023/03/28 07:25
- 小学校 小学校の授業参観って年に何回ありますか? 1 2022/08/20 21:06
- 人事・法務・広報 会社の行事などで休日労働させる時、振替休日が休日労働した日の前週or翌週以降、月をまたいだ場合の手当 3 2023/05/21 23:37
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) 前の(左隣の)シートを連続参照するように、あとから変更したい 1 2023/02/22 00:51
このQ&Aを見た人はこんなQ&Aも見ています
-
週の労働時間を計算するエクセル
Excel(エクセル)
-
ある一定時間を超えた場合の超えた時間のみを合計する方法をご存知でしたら
Excel(エクセル)
-
エクセルで一週間単位で数値を集計する方法について質問です。
Excel(エクセル)
-
-
4
月60時間以上の時間を求める
その他(ソフトウェア)
-
5
1週間当たりの労働時間の計算方法
数学
-
6
エクセルで勤怠表 土日祝と平日と分けてそれぞれの合計を出したい
Excel(エクセル)
-
7
Excel条件付書式(残業45時間以上になったら色をつけたい)
Excel(エクセル)
-
8
Excelにて残業時間、休日出勤時間の求め方
Excel(エクセル)
-
9
エクセルで変則労働時間制の法定内・外労働時間の算出を自動で行いたい
Excel(エクセル)
-
10
エクセルで表示形式の時刻の「0:00」を表示しないようにするには?
Excel(エクセル)
-
11
エクセル 週ごとの数値抽出
Excel(エクセル)
-
12
複数の休憩時間がある場合の休憩時間の算出方法
Excel(エクセル)
-
13
31:30:00が1900/1/1 7:30:0
その他(Microsoft Office)
-
14
勤務表で勤務時間が入力されてない日は「休み」と自動表示させたい。
Excel(エクセル)
-
15
エクセルで休憩時間を計算したいのですが 条件 勤務時間6時間以上8時間未満は休憩45分 8時間以上は
Excel(エクセル)
-
16
Excelの時間計算で経過時間から特定の時間を引く方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Office2021のエクセルで米国株...
-
Excelの「0」だけ非表示、小数...
-
Excelシートの保護時にデータの...
-
Excelで複数シートの選択セルを...
-
エクセルで条件に一致したセル...
-
エクセルで、加筆修正したセル...
-
EXCELのハイパーリンクのセルを...
-
Excelでスクロールすると文字が...
-
エクセルで別シートからの最大...
-
日付が未入力の際はゼロか、空...
-
エクセルで1月0日と表示される!!
-
エクセルで20万行あるシート...
-
ExcelでTODAY関数を更新させな...
-
iPhoneのExcelアプリで、別のシ...
-
Excelにて、カタカナだけのセル...
-
ハイパーリンク で『指定された...
-
VBAで、セル(Range)のオブジ...
-
複数シートの同じセル内容を1シ...
-
Excel / 出納帳の繰越の仕方...
-
VBAでシート全体の塗りつぶしを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
iPhoneのExcelアプリで、別のシ...
-
Excelの「0」だけ非表示、小数...
-
Excelで複数シートの選択セルを...
-
Excelシートの保護時にデータの...
-
エクセルで条件に一致したセル...
-
エクセルで1月0日と表示される!!
-
日付が未入力の際はゼロか、空...
-
ExcelでTODAY関数を更新させな...
-
EXCELのハイパーリンクのセルを...
-
別シートのセルを絶対参照にする
-
Excelでスクロールすると文字が...
-
複数シートの同じセル内容を1シ...
-
マクロ 新しいシートにデータ...
-
エクセルで複写のように自動入...
-
エクセルで、加筆修正したセル...
-
エクセル ハイパーリンクで画像...
-
ハイパーリンク で『指定された...
-
エクセルで20万行あるシート...
-
エクセルで特定のセルの値を別...
-
INDIRECT(空白や()がある文字列...
おすすめ情報