2016-09-23 11 views
0

まず、タイトルを謝罪する必要があります。オフセットで最適化されたコピー/ペーストコード?

次のコードの最適化に問題があります。 このマクロの目的は、あるブックから別のブックに値をインポートすることです。

Workbook1は送信元とWorkbook2の宛先です。

ソースレポートの長さが毎日変わることがあるため、コードを繰り返すことは避けてください。ただし、抽出する必要がある値は常に87行分だけずれます(例:C30 Iを見た後C117、C204、C291に行く必要があります...私はエクスポートする必要がある最初の値のセットであるC7、C86、F45と同じです、次はC94、C173、F132などです)。

lMaxRows = Cells(Rows.Count, "B").End(xlUp).Row 

If wbkWorkbook1.Worksheets("SC_Server").Range("C30") > 0 Then 
wbkWorkbook2.Worksheets("StaffCaf").Range("B" & lMaxRows + 1) = _ 
wbkWorkbook1.Worksheets("SC_Server").Range("C7") 

wbkWorkbook2.Worksheets("StaffCaf").Range("F" & lMaxRows + 1) = _ 
wbkWorkbook1.Worksheets("SC_Server").Range("C86") 

wbkWorkbook2.Worksheets("StaffCaf").Range("N" & lMaxRows + 1) = _ 
wbkWorkbook1.Worksheets("SC_Server").Range("F45") 
End If 

If wbkWorkbook1.Worksheets("SC_Server").Range("C117") > 0 Then 
wbkWorkbook2.Worksheets("StaffCaf").Range("B" & lMaxRows + 1) = _ 
wbkWorkbook1.Worksheets("SC_Server").Range("C94") 

wbkWorkbook2.Worksheets("StaffCaf").Range("F" & lMaxRows + 1) = _ 
wbkWorkbook1.Worksheets("SC_Server").Range("C173") 

wbkWorkbook2.Worksheets("StaffCaf").Range("N" & lMaxRows + 1) = _ 
wbkWorkbook1.Worksheets("SC_Server").Range("F132") 

私は私の説明が明確であると思います:)あなたの助けを事前に

おかげ

答えて

0

はあなたのリストに宣言を追加します。

ループを使用して、一度にスキップする回数をループに伝えることができます。 Step 87は毎回87回ループするように指示します。

また、ワークシートを変数に入れて、入力を保存するためにWithブロックを使用しました。

そこから正しい細胞を得るのは数学的なことです。

Dim ws1 As Worksheet 
Dim ws2 As Worksheet 
Dim i As Long 


Set ws1 = wbkWorkbook1.Worksheets("SC_Server") 
Set ws2 = wbkWorkbook2.Worksheets("StaffCaf") 
With ws1 
    For i = 30 To .Range("C" & .Rows.Count).End(xlUp).Row Step 87 
     lMaxRows = ws2.Cells(ws2.Rows.Count, "B").End(xlUp).Row 

     If .Range("C" & i) > 0 Then 
      ws2.Range("B" & lMaxRows + 1) = .Range("C" & i - 23) 
      ws2.Range("F" & lMaxRows + 1) = .Range("C" & i + 56) 
      ws2.Range("N" & lMaxRows + 1) = .Range("F" & i + 15) 
     End If 
    Next i 
End With 
+0

すごくありがとう、スコットはすばらしく働いています! 1つの質問です。「宣言をリストに追加する」とはどういう意味ですか? –

+0

他の変数を宣言した場所にDimステートメントを移動します。 –

+0

Okありがとうございました –

関連する問題