簡體   English   中英

如何使用 Excel VBA 從兩個工作簿中復制特定單元格並將它們合並為一個?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM