我有一个称为master(工作表2)的工作簿。 这包含数据线,像这样:VBA循环遍历每行并将相关数据复制到另一个工作簿
Week Company item No Weight
2 A 1222 100g
2 A 1234 100g
2 A 2222 100g
2 B 1111 100g
2 C 555 100g
我有一个名为template.xlsx
我想通过我的主簿各环线模板文件。 将该公司复制到模板上的单元格C12中。 模板上的单元格A27的项目编号。 模板上单元格B27的权重。
这很简单,并显示在上图中。
但是,如果公司A出现3次,那么每个项目号和权重都需要复制到模板中 - 需要插入新行。
结果应该如下:
基本上我需要遍历每行中我的主人的工作簿,表2,和每个相关列复制到我的模板工作簿相应的单元格。它需要做到这一点,但也可以将同一家公司分组到一个模板中,并根据需要将所有项目号列入新行(如公司A示例)。
这是我的代码到目前为止,很基本,但我是全新的vba,所以任何帮助将非常感激。
Sub foo2()
Dim x As Workbook
Dim y As Workbook
'## Open both workbooks first:
Set x = ThisWorkbook
Set y = Workbooks("template.xlsx")
'Now, transfer values from x to y:
y.Sheets(1).Range("C12").Value = x.Sheets(2).Range("B2")
y.Sheets(1).Range("A27").Value = x.Sheets(2).Range("C2")
y.SaveAs ("C:\templates\" & Range("B2").Value & ".xlsx")
'Close x:
x.Close
End Sub
http://www.excelfunctions.net/VBA-Loops.html – cyboashu
你不必一定是插入新行。可以在同一单元格内的不同行上使用不同的数据项:'ActiveCell.FormulaR1C1 =“ABC = 123”&Chr(10)&“CVF = 678”&Chr(10)&“gbh = 098”' 。当你去检索它们时,你可以使用分割函数和Chr(10) –
的分隔符我建议你学习一下循环和数组。在这种情况下,这会让你的生活更轻松。您需要使用循环来搜索所有数据以查找项目发生的次数,然后使用数组来存储这些出现的值。您可能也有兴趣使用字典来查找每个公司的事件(如果您正在为所有公司创建输出)。另外,我只注意到你正在返回工作簿x的范围。请务必在两条转移线的末端放置“.Value”。 –