/ / Come si usa Excel VBA per copiare celle specifiche da due cartelle di lavoro e combinarle in una? - excel, vba, excel-vba

Come posso usare Excel VBA per copiare celle specifiche da due cartelle di lavoro e combinarle in una sola? - Excel, VBA, Excel-VBA

Ho due cartelle di lavoro Excel che sto cercando di creareleggere da. Ho bisogno di leggere da una colonna nella prima e confrontare quel campo con un campo nella seconda cartella di lavoro. Se c'è una corrispondenza, voglio copiare la riga originale in una nuova cartella di lavoro Excel e aggiungere il nome a una parte di un'altra colonna. Inoltre, se viene riempita un'altra colonna in quella riga, devo duplicare nuovamente la riga originale nella nuova cartella di lavoro e aggiungere quel nome. Ciò accadrà fino a 20 volte per riga, ma non sempre.

Fondamentalmente, ho bisogno di fare qualcosa del genere:

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

Le colonne che devo aggiungere non sono convenientiuno accanto all'altro. Sono separati da altre 5 o 6 colonne, dare o ricevere, e non so da dove iniziare. Ho cercato in giro e ho visto come copiare interi fogli da una cartella di lavoro a un'altra, ma non ho visto come specificamente scavare e duplicare una riga nel modo in cui ho bisogno.

risposte:

0 per risposta № 1

Sembra più che tu stia chiedendo una soluzione da scrivere per te piuttosto che fare una domanda specifica, ma ecco alcuni suggerimenti per farti andare:

Supponendo che le altre cartelle di lavoro siano già aperte, puoi fare riferimento alle altre cartelle utilizzando l'elenco delle cartelle di lavoro, ad es.

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")

È possibile fare riferimento ai fogli in quelle cartelle di lavoro utilizzando il nome del foglio, ad esempio se si desidera un foglio chiamato "Principale" sulla cartella di lavoro A, è possibile utilizzare:

workBookA.Sheets("Main").Activate

La copia di una colonna dal foglio a una chiamata "Report" sulla cartella di lavoro C potrebbe essere eseguita in questo modo:

workBookA.Sheets("Main").Range("a1", workBookA.Sheets("Main").Range("a1").End(xlDown)).Copy
workBookC.Sheets("Report").Range("a1").PasteSpecial

o se questo è più facile da seguire

workBookA.Sheets("Main").Activate
Range("a1", Range("a1").End(xlDown)).Copy
workBookC.Sheets("Report").Activate
Range("a1").PasteSpecial

In bocca al lupo