/ / Как да използвам Excel VBA за да копирам конкретни клетки от две работни книги и да ги комбинирам в една? - excel, vba, excel-vba

Как да използвам Excel VBA за копиране на конкретни клетки от две работни книги и да ги комбинирам в едно? - excel, vba, excel-vba

Имам две отлични работни книги, които се опитвам да правячетете от. Трябва да прочета от колона в първата и да сравня това поле с поле във втората работна книга. Ако има съвпадение, искам да копирам оригиналния ред в нова работна книга на 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 други колони, дайте или вземете, и аз не знам откъде да започна. Потърсих наоколо и видях как да копирам цели листове от една работна книга в друга, но не видях как наистина специално изкопавам и дублирам ред по начина, по който трябва.

Отговори:

0 за отговор № 1

Изглежда по-скоро искаш да бъде написано решение вместо теб, отколкото да задаваш конкретен въпрос, но ето някои насоки, които да те насочат:

Ако приемем, че другите работни книги са вече отворени, можете да се обърнете към останалите книги, като използвате списъка с работни книги, т.е.

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

Листовете в тези работни книги могат да се посочат, използвайки името на листа, т.е. ако искате лист, наречен „Основен“ в Работна книга А, тогава можете да използвате:

workBookA.Sheets("Main").Activate

Копирането на една колона от листа в едно обаждане "Доклад" в Workbook 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

Късмет