我一直在努力解决这个问题,但到目前为止还没有成功。该代码工作正常,但不幸的是,它以意想不到的方式运行。
宏工作簿是包含“数据”表上所有数据字段的主工作簿。精益工作簿包含某些数据点,我希望将这些数据点复制并粘贴到宏工作簿中" data“工作表上的命名范围中,直到最后可用的行。
前任:
宏工作簿有列:
Eng # Eng Name Date Started Date Completed KPI1 KPI2
100 ABC 12/01/2018 12/10/2018 50 100 精益工作簿有列:
Eng # Date Started Date Completed KPI# Score
101 12/02/2018 12/03/2018 1 50
101 12/02/2018 12/03/2018 2 10
102 11/01/2018 11/20/2018 1 100
102 11/01/2018 11/20/2018 4 100目标是双重的:
下面的代码是我的尝试:
Public Sub GrabLeanFileData()
Dim wbmacro As Workbook
Dim wblean As Workbook
Set wbmacro = Workbooks.Item("MacroFile.xlsm")
Set wblean = Workbooks.Item("Subcontractor CA - KPI's Lean.csv")
Dim wsmacro As Worksheet
Dim wslean As Worksheet
Set wsmacro = wbmacro.Worksheets.Item("Data")
Set wslean = wblean.Worksheets.Item("Subcontractor CA - KPI's Lean")
Dim leanrange As Range
Set leanrange = wslean.Range("A2:A15000")
wblean.Activate
Dim cell As Range
i = 1
For Each cell In leanrange
If leanrange.Range("A2") <> "E1002" Then
Range("A2").Offset(i, 0).Value = wsmacro.Range("Enum").Value
Range("B2").Offset(i, 0).Value = wsmacro.Range("ds").Value
Range("C2").Offset(i, 0).Value = wsmacro.Range("dc").Value
Range("D2").Offset(i, 0).Value = wsmacro.Range("kpi1").Value
i = i + 1
End If
Next cell
End Sub我想跳过1002的测试#,所以我把这个条件放进去了。
发布于 2018-12-11 20:08:28
据我所知,您要做的是从leanrange和相邻列中的每个单元格中获取值,并将其插入到宏工作簿中的表中,在适当的标题下。
我认为这里有两个问题:
下面是我的建议:既然您使用的是for每个循环,那么使用cell对象循环遍历范围内的所有单元格,而不是使用偏移量。然后,您需要在宏工作簿中偏移行,否则您只是一次又一次地粘贴到同一行。这就是你的标题被覆盖的原因。您可以使用第二个循环来偏移cell,这样您就可以遍历leanrange中的每一列。最后,由于您的范围"Enum“、"ds”、"dc“等看起来都是相邻的列,所以我通过使用j对宏工作簿中的列进行了简化。
Dim i As Integer
Dim j As Integer
Dim cell As Range
i = 1
For Each cell In leanrange
If leanrange.Range("A2") <> "E1002" Then
For j = 0 To 3
wsmacro.Range("Enum").Offset(i, j) = cell.Offset(0, j).Value
Next j
i = i + 1
End If
Next cellhttps://stackoverflow.com/questions/53728794
复制相似问题