2016-02-26 3 views

ответ

0

Что-то вроде этого?

Dim i as Integer, iWS2 
Dim WS1 as WorkSheet, WS2 as WorkSheet 

Set WS1 = Sheets("Name WS1") 
Set WS2 = Sheets("Name WS2") 
i = 2 
iWS2 = 1 

Do Until WS1.Cells(i, 11).value = "" 
    If LCase(WS1.Cells(i, 11).value) = "nationality" Then 
     WS2.Range(Cells(iWS2, 1), Cells(iWS2, 13)).value = WS1.Range(Cells(i, 1), Cells(i, 13)).value 
     WS2.Cells(iWS2, 14).value = WS1.Cells(i + 1, 13).value 
      'I'd recommend to put all info of every student in the same row 
      'Do the same for the other cells 
     iWS2 = iWS2 + 1 
    End If 

    i = i + 1 
Loop 

Set WS1 = Nothing 
Set WS2 = Nothing 
+0

Да, это логика, но она повторяет ту же строку, как столько раз, сколько student_infos, для каждого студента, мы берем из первых sheet.I хотите ввести значения для каждого студента в строке один раз. @RobK – newforummember

+0

Я не уверен, что вы имеете в виду, но разве вы не забыли добавить строки кода для другой информации о студенте? 'WS2.Cells (iWS2, 15) .value = WS1.Cells (i + 2, 13) .value', etcetera? – RobK

+0

Я сделал это. Логика правильная. Думаю, мне нужно управлять индексами. Когда условие сопровождается. Я даю i новое значение индекса r И перемещаюсь с r тогда. @RobK – newforummember

Смежные вопросы