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