Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12212 / 13644 ツリー ←次へ | 前へ→

【11693】ループ処理の工夫 みゃー 04/3/14(日) 22:17 質問
【11694】Re:ループ処理の工夫 カド 04/3/14(日) 22:37 回答
【11695】Re:ループ処理の工夫 カド 04/3/14(日) 22:55 回答
【11706】Re:ループ処理の工夫 カド 04/3/15(月) 9:31 回答
【11719】Re:ループ処理の工夫 みゃー 04/3/15(月) 12:55 お礼

【11693】ループ処理の工夫
質問  みゃー  - 04/3/14(日) 22:17 -

引用なし
パスワード
   どなたか教えてください。
例えば、sheet1に1年分の出勤表があります。

A列:日付(1/1〜12/31)
B列:列Aに対応する曜日
C列:出勤時間
D列:退出時間
E列:月〜土(祝日含む)のそれぞれの実働時間(D-C)
F列:土曜・祝日のそれぞれの実働時間(D-C)
G列:時間外(1)
H列:時間外(2)

条件1
月曜から土曜日までの6日間(祝日含む)の実働時間が合計40時間を越えた場合、
その週の土曜・祝日の実働時間の合計がH列の時間外(2)に入る

条件2
合計40時間に満たない場合、
その週の土曜・祝日の実働時間の合計がG列の時間外(1)に入る

これを、月〜土、月〜土、というふうに曜日を認識させて一年分ループ処理していきたいのです。
Mach・Weekday関数を使って、土曜・祝日の実働時間をF列に入れています。
日曜を飛ばして6日間ずつの条件別集計をループしていく方法を教えてください。

どうぞよろしくお願い致します。

【11694】Re:ループ処理の工夫
回答  カド E-MAIL  - 04/3/14(日) 22:37 -

引用なし
パスワード
   ▼みゃー さん こんにちは。

セルが日曜なら合計をゼロにする
セルが日曜以外なら合計に足す

を繰り返せば良いと思います。


もう少し具体的に分からないことを言ってもらえれば具体的な回答が出来ます。
それとも、質問の内容を丸々回答してというほしいということでしょうか?

【11695】Re:ループ処理の工夫
回答  カド E-MAIL  - 04/3/14(日) 22:55 -

引用なし
パスワード
   ▼みゃー さん こんにちは。

式で良ければ、
G列の土日に =IF(SUM(E8:E12)<40,F13,)
F列の土日に =IF(SUM(E8:E12)>40,F13,)
として、1年分ドラッグすれば可能で簡単ですよ。

【11706】Re:ループ処理の工夫
回答  カド E-MAIL  - 04/3/15(月) 9:31 -

引用なし
パスワード
   ▼みゃー さん こんにちは。
こんなので良ければどうぞ。

Sub aaa()
  
  n = 2
  kei = 0
  
  Do While n < 2 + 366
    If (Range("b" & n) <> "土") And (Range("b" & n) <> "日") Then
      kei = kei + Range("e" & n)
    Else
      If kei <= 40 Then
        Range("g" & n) = Range("f" & n)
      Else
        Range("h" & n) = Range("f" & n)
      End If
    End If
    
    If Range("b" & n) = "日" Then
      kei = 0
    End If
    
    n = n + 1
  Loop
  
End Sub

【11719】Re:ループ処理の工夫
お礼  みゃー  - 04/3/15(月) 12:55 -

引用なし
パスワード
   カドさん 
ありがとうございます!!
こんなにして頂いて感動です。
早速やってみます。また質問させて頂くかもしれませんが、
その時はどうぞ宜しくお願いします。

12212 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free