2016-06-16 2 views
1

Я пытаюсь запустить партию. Мне нужны определенные столбцы из одного листа, скопированного и вставленного в недавно созданный лист. Это должно включать имя, адрес электронной почты и т. Д. Я сделал вложенный цикл, чтобы сделать это, но я не могу остановить выходную строку от приращения после того, как данные начнут повторяться. Он продолжается до конца страницы. Мой код выглядит следующим образом:Петля внутри цикла в цикле

«собрать данные

For r = 1 To ActiveCell.End(xlDown).Row 
    Cells(1, c).Select 
     Do Until IsEmpty(Selection) 
     name = ActiveCell.End(xlToLeft).Value 
     email = ActiveCell.End(xlToLeft).Offset(0, 1).Value 
     phoneNumber = ActiveCell.End(xlToLeft).Offset(0, 2).Value 
     generation = ActiveCell.End(xlToLeft).Offset(0, 3).Value 
     status = ActiveCell.End(xlToLeft).Offset(0, 13).Value 

'paste data 

     Sheets("Compiled Data").Select 
     Cells(oRow, c) = name 
     Cells(oRow, c + 1) = email 
     Cells(oRow, c + 2) = phoneNumber 
     Cells(oRow, c + 3) = generation 
     Cells(oRow, c + 4) = status 

     oRow = oRow + 1 

     Loop 

Как вы можете видеть, у меня уже есть две петли работает. Мне интересно, нужен ли мне третий, чтобы остановить вывод (oRow), и если возможно даже иметь цикл в цикле внутри цикла.

Спасибо.

+0

Move ActiveCell.End (xlDown) .Row переменной вне цикла – dbmitch

+0

вашей помощью "г" в счетчик цикла, но увеличивающиеся oRow – dbmitch

+0

'Do Until IsEmpty (выбор)' вам нужно выбрать новую ячейку, если вы собираетесь использовать эту логику. – findwindow

ответ

0
Cells(1, c).Select 

Это всегда выбирает строку 1. Я не думаю, что это то, что вы хотите. Также переключение между листами очень неэффективно. У вас есть

Sheets("Compiled Data").Select 

но вы никогда не вернетесь к своему первому листу.

Это должно работать плавную

c_old = 1 'Your "Name" column in original 
c_new = 1 'Your "Name" column in Compiled Data 

For r = 1 To ActiveSheet.Cells(Rows.Count, c_old).End(xlUp).Row 
    For j = 0 To 3 
     Sheets("Compiled Data").Cells(r, c_new + j) = Cells(r, c_old + j) 
    Next j 
    Sheets("Compiled Data").Cells(r, c_new + 4) = Cells(r, c_old + 13) 
Next r 
Смежные вопросы