2013-07-10 8 views
0
Sub Nameitem() 
Dim Baza As Range 
Dim Lista As Range 
For Each Lista In Range("C12:C32") 
     For Each Baza In Range("[Back.xlsx]New_Games!$B$2:$B$10000") 
      If Baza.Value = Lista.Value Then 
     'copy E Column from Back(baza) to D in Lista 
     else 
     'no set value 
     End if 
    Next 
Next 
End Sub 

я просто начать макрос записи в Excel, и мне нужно, чтобы помочь написать какую-либо функцию для копирования EX формы столбец 1 первенствует в Dy столбец в другой первенствуетVBA Column копия двигаться

+0

Хорошим способом изучения синтаксиса является запись себя, выполняющая действие с помощью функции «Запись макроса», - тогда вы можете взять все соответствующие биты и сделать ее динамичной –

ответ

0
Application.Workbooks("book1").Worksheets("sheet1").Range("E:X").Copy _  
      Application.Workbooks("book2").Worksheets("sheet2").Range("D:Y") 

Вы можете заменить приложение .Workbooks («...»). Рабочие листы («...») с личным кодовым именем при обращении к листам в той же книге, что и код.

0

Я бы использовал объект Workbook, чтобы открыть другую книгу.

Затем вы можете получить доступ к данным в другой книге;

wbBaza.Sheets("New_Games").Range() 

Завершить его, как в вашем коде;

For Each Baza in wbBaza.Sheets("New_Games").Range("B2:B10000") 

Я не понимаю, что вы имеете в виду EX и столбцом DY, но если его данные в том же строках, как значения Сравнивают, просто использовать диапазоны для покрытия также, что столбец ... примера:

For Each Baza in wbBaza.Sheets("New_Games").Range("B2:F10000") 

Тогда, если столбец назначения F, вы можете ... например использовать .Cells() для копирования с;

Lista.Cells(1,1) = Baza.Cells(1,5) 

Это потому, что диапазон Baza от В до F, так B, C, D, E, F = 5

Вы конечно должны открыть диапазон куда копировать тоже ... как в ваш код содержит только один столбец Диапазон («C12: C32»)

Редактировать; О, ну, вам нужно скопировать с E: X на D: Y, все же я бы просто сделал петлевой желоб. В таком случае ...

Не было бы ужасной версии;

For Each Lista In Range("A12:X32") 
    For Each Baza In wbBaza.Sheets("New_Games").Rows 
     If Lista.Cells(1, 3) = Baza.Cells(1, 2) Then 
      For iLoop = 5 To 25 ' E=5 to X=25 
       Lista.Cells(1, iLoop - 1) = Baza.Cells(1, iLoop) 
      Next 
     End If 
     If Baza.Row = 10000 Then 
      Exit For 
     End If 
    Next 
Next 
Смежные вопросы