[英]How do I use Excel VBA to copy specific cells from two workbooks and combine them into one?
我有两本要阅读的 excel 工作簿。 我需要从第一个列中读取,并将该字段与第二个工作簿中的一个字段进行比较。 如果有匹配项,我想将原始行复制到新的 excel 工作簿,并将名称附加到另一列的一部分。 此外,如果该行中的另一列已填充,我需要再次将原始行复制到新工作簿中,并附加该名称。 每行最多会发生 20 次,但并非总是如此。
基本上,我需要做这样的事情:
Workbook A:
Name OtherData1 OtherData2
-------- ---------- ----------
Railroad Data Data
MailRoute Data Data
BoatPath Data Data
Workbook B:
Name rtuTopic[1] rtuTopic[2] [.....] rtuTopic[20]
-------- -------- -------- --------
Railroad Route_01 Route_05 Route_21
MailRoute Route_12 NULL NULL
BoatPath Route_01 Route_15 NULL
Workbook C (the result I want)
Name OtherData1 OtherData2 rtuTopic
-------- ---------- ---------- --------
Railroad_01 Data Data Route_01
Railroad_05 Data Data Route_05
...........
Railroad_21 Data Data Route_21
MailRoute_12 Data Data Route_12
BoatPath_01 Data Data Route_01
BoatPath_15 Data Data Route_15
我需要附加的列不方便地彼此相邻。 他们被5或6个其他列隔开,给予或接受,我不知道从哪里开始。 我四处搜索,看到了如何将整个工作簿从一个工作簿复制到另一个工作簿,但我没有看到如何真正按照我需要的方式专门挖掘和复制一行。
这似乎更像是您要求为您编写解决方案而不是提出特定问题,但这里有一些指导可以帮助您:
假设其他工作簿已经打开,您可以使用工作簿列表来引用其他工作簿,即
Dim workBookA As Workbook
Dim workBookB As Workbook
Dim workBookC As Workbook
Set workBookA = Workbooks("Workbook A")
Set workBookB = Workbooks("Workbook B")
Set workBookC = Workbooks("Workbook C")
可以使用工作表的名称引用这些工作簿中的工作表,即如果您想要工作簿 A 上名为“Main”的工作表,那么您可以使用:
workBookA.Sheets("Main").Activate
可以将工作表中的一列复制到工作簿 C 上的一个调用“报告”中,如下所示:
workBookA.Sheets("Main").Range("a1", workBookA.Sheets("Main").Range("a1").End(xlDown)).Copy
workBookC.Sheets("Report").Range("a1").PasteSpecial
或者如果这更容易遵循
workBookA.Sheets("Main").Activate
Range("a1", Range("a1").End(xlDown)).Copy
workBookC.Sheets("Report").Activate
Range("a1").PasteSpecial
祝你好运
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.