我正在尝试运行批处理。我需要将一张纸上的某些列复制并粘贴到新创建的纸张中。这应该包括名称,电子邮件等。我已经做了一个嵌套循环,但是在数据开始重复之后我无法阻止输出行递增。它一直沿着页面继续。我的代码如下:
'收集数据
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 :(得分: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