2017-08-08 14 views
0

私は、プロジェクトの予定日とカレンダーに一致する日付のレポートをチェックして、一致するセルを強調表示し、月の右側の2列にプロジェクトを作成します。Excel VBA - 水平範囲をループ内で1行下に移動する方法

私は今年12ヶ​​月間、これを週ごとに行っています。だから、毎週これを行うのではなく、コードを1週間、5回ループするループを作りたいと思っています。それからそれを12ヶ月間繰り返すループの中に入れてください。私は今月の最初の週のコードを持っていて、範囲に変数 "x"を追加したいので、1週間後に範囲に1を加えて、次の週に1行移動します。私は範囲に "x"を入れる方法を見つけることができませんでした。

すべてのヘルプはここには理解されるであろうが、私が持っているコードです:

'for january 
Set januaryRng = ActiveSheet.Range("A2:G2") 
i = 2 
For x = 0 to 4 
For Each cell In januaryRng 
If cell <> "" Then 
     For i = 2 To lastRow 
       If cell.Value = Sheets("Incident Summary Report").Cells(i, "AI").Value Then 
       Sheets("sheet1").Cells(2 + x, "I") = Sheets("sheet1").Cells(2 + x, "I") & Chr(10) & Sheets("Incident Summary Report").Cells(i, "B").Value 
       ElseIf cell.Value = Sheets("Incident Summary Report").Cells(i, "AJ").Value Then 
        Sheets("sheet1").Cells(2 + x, "I") = Sheets("sheet1").Cells(2 + x, "I") & Chr(10) & Sheets("Incident Summary Report").Cells(i, "B").Value 
       End If 
       If cell.Value = Sheets("Incident Summary Report").Cells(i, "AI").Value Then 
        Sheets("sheet1").Cells(2 + x, "H") = Sheets("sheet1").Cells(2 + x, "H") & Chr(10) & Sheets("Incident Summary Report").Cells(i, "AI").Value 
       ElseIf cell.Value = Sheets("Incident Summary Report").Cells(i, "AJ").Value Then 
       Sheets("sheet1").Cells(2 + x, "H") = Sheets("sheet1").Cells(2 + x, "H") & Chr(10) & Sheets("Incident Summary Report").Cells(i, "AJ").Value 
       End If 
      Next i 
     Else 
End If 
Next cell 
Next x 
+0

私は、シートのサンプルを持たずに何をしようとしているのか分かりません。各行は1週間を表しますか? –

+0

各行が1週間を表す場合は、あなたが上書きしているという問題があると思います。 'For i = 2 To lastRow'を' For i = 2 To endRow step 5'に置き換えて、このループを 'For x = 0 to 4'と交換してみてください。つまり、私は外側のループをループ(ステップ5)し、内側のループをxにします。しかし、私は間違っているかもしれません。 – CMArg

答えて

2

私はあなたが今、行きたい場所、私が見思い

範囲あなたがしている(ActiveSheet.Range("A2:G2"))ループスルーには、最初の週から7日間(セル)しか含まれていません。

を実行するには、xループが反復するときに新しい範囲を設定する必要があります。

これは、あなたがこの部分を移動する必要がを意味します:

この部分の下

Set januaryRng = ActiveSheet.Range("A2:G2")

For x = 0 to 4

そしてあなたは

からあなたの範囲参照を変更する必要があります

"A2:G2""A" & 2 + x, "G" & 2 + x

は、すべてのすべてで、それは

'for January 
i = 2 
For x = 0 to 4 
    Set januaryRng = ActiveSheet.Range("A" & 2 + x, "G" & 2 + x) 
    For Each cell In januaryRng 
     If cell <> "" Then 
      ...... 

こう、januaryRngはそうで.Range("A2", "G2")から.Range("A3", "G3")に変更...となりますようになります。

このである必要があります。

関連する問題