复制/粘贴使用偏移优化的代码?

时间:2016-09-23 19:40:12

标签: excel vba excel-vba

首先,我需要为标题道歉,我无法找到相关的标题!

我在优化以下代码时遇到了问题。 此宏的目标是将值从一个工作簿导入另一个工作簿。

Workbook1是源,Workbook2是目的地。

我想做的是避免重复代码,特别是因为源报告的长度每天都会改变,但我需要提取的值总是偏移87行(例如:看了C30后我需要转到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")

我希望我的解释清楚:)

提前感谢您的帮助

1 个答案:

答案 0 :(得分: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
相关问题