我在试着运行批处理。我需要从一个工作表复制和粘贴到新创建的工作表中的某些列。这应该包括姓名、电子邮件等。为了做到这一点,我做了一个嵌套循环,但我不能在数据开始重复之后停止输出行的递增。它会一直向下延伸到页面。我的代码如下:
‘收集数据
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),以及是否有可能在循环中的循环中有一个循环。
谢谢。
发布于 2016-06-17 04:09:09
Cells(1, c).Select这总是选择第一行。我不认为这是你想要的。此外,在纸张之间切换是非常低效的。你有
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 rhttps://stackoverflow.com/questions/37866436
复制相似问题