首先,我需要为标题道歉,我无法找到相关的标题!
我在优化以下代码时遇到了问题。 此宏的目标是将值从一个工作簿导入另一个工作簿。
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")
我希望我的解释清楚:)
提前感谢您的帮助
答案 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