Vba 将数据相应地分配给新列,并根据值合并重复数据
我是一名动画师,编程对我来说还是很新的,但之前我的老板给我分配了一份工作,将两个不同的xls文件合并成一个。我设法在这里研究了一些代码,并使用VBA代码根据新的工作簿标题复制和粘贴数据 例如,下面是文件Vba 将数据相应地分配给新列,并根据值合并重复数据,vba,excel,Vba,Excel,我是一名动画师,编程对我来说还是很新的,但之前我的老板给我分配了一份工作,将两个不同的xls文件合并成一个。我设法在这里研究了一些代码,并使用VBA代码根据新的工作簿标题复制和粘贴数据 例如,下面是文件 Username Name Date Image Attempt Date Image Status 222 AA Aug No 1 182 BB Mar Yes 0 100
Username Name Date Image Attempt Date Image Status
222 AA Aug No 1
182 BB Mar Yes 0
100 CC Aug No 1
787 DD Mar Yes 0
但是现在我在从另一个xls文件移动下面的数据时遇到了麻烦。并根据“用户名”和“名称”标题合并它们。因为它包含新的数据列
Username Name Date Image Status
222 AA 2013 Color good
182 BB 2011 B/W bad
100 CC 2011 B/W bad
669 EE 2013 Color good
我需要把它们变成下面这样的东西
Username Name Date Image Attempt Date Image Status
222 AA Aug No 1 2013 Color good
182 BB Mar Yes 0 2011 B/W bad
100 CC Aug No 1 2011 B/W bad
787 DD Mar Yes 0 2013 Color good
669 EE 2013 Color good
如果有任何关键字或指南将对我有很大帮助。这将带来所有数据,并将wb1中尚未包含的任何数据添加到文件末尾,日期、图像和尝试下的空白处
Dim wb1, wb2 as Workbooks
Dim ws1, ws2 as Worksheets
Dim c3ll1, c3ll2, range1, range2 as Range
Set wb1 = Workbooks("Name1")
Set wb2 = Workbooks("Name2")
Set ws1 = wb1.Worksheets("name")
Set ws2 = wb2.Worksheets("name")
lastrow2 = ws2.Cells(Rows.Count, 1).End(xlUp).Row
Set range2 = ws2.Range("A2:A" & lastrow2)
For each c3ll2 in range2
a = 0
lastrow1 = ws1.Cells(Rows.Count, 1).End(xlUp).Row
Set range1 = ws1.Range("A2:A" & lastrow1)
activerow2 = c3ll2.Row
For each c3ll1 in range1
If c3ll1.Value = c3ll2.Value then
activerow1 = c3ll1.Row
ws1.Cells(activerow1, 6) = ws2.Cells(activerow2, 3)
ws1.Cells(activerow1, 7) = ws2.Cells(activerow2, 4)
ws1.Cells(activerow1, 8) = ws2.Cells(activerow2, 5)
a = 1 'Username is found
End if
Next c3ll1
If a = 0 then 'If Username is not found print at end
ws1.Cells(lastrow1 + 1, 1) = ws2.Cells(activerow2, 1)
ws1.Cells(lastrow1 + 1, 2) = ws2.Cells(activerow2, 2)
ws1.Cells(lastrow1 + 1, 6) = ws2.Cells(activerow2, 3)
ws1.Cells(lastrow1 + 1, 7) = ws2.Cells(activerow2, 4)
ws1.Cells(lastrow1 + 1, 8) = ws2.Cells(activerow2, 5)
End If
Next c3ll2
我已经打开工作簿2,但当我运行F8时。它显示代码集ws2=wb2。工作表(“名称”)您是否将“名称”更改为工作表的名称?是的,我有一个打开新工作簿的代码。因此,我总共有两个工作簿。但是每个工作表都在不同的工作簿中。如果您只打开一个新工作簿并保存它,这样您就可以知道它的名称,并可以在代码中设置它,这会更容易。除非这是一个你将一直在做的自动化过程。