意图:我有一个数据列表(输入)。列BN(有值的行数会有所不同,因此我创建了一个循环,它将运行宏直到活动单元格为空)。
我的宏从范围(BN2)开始并一直向下延伸到列BN,它只在遇到空行时停止。宏的所需结果将是开始复制工作表中的单元格值(输入)。范围(BN2)将其粘贴到工作表(输出)。范围(A2:A10)。
例如,如果" Peter"单元格(输入)中的值,范围(BN2)然后当marco运行并将值粘贴到工作表(输出)范围(A2:A10)时。即范围A2:A10将反映"彼得"。然后宏返回到工作表(输入)并复制下一个单元格值并将其粘贴到范围(A11:A19)示例:" Dave"是表格中的值(输入)范围(BN3),然后是#34;戴夫"将被粘贴到表格中的下一行9(mywork).Range(A11:A19)。 A11:A19将反映"戴夫" 再次重复相同的过程返回到此时间范围(BN4)的工作表(输入),将值复制到工作表(输出)并将其粘贴到A20:A29中。 基本上这个过程重复......
当工作表(输入)列A中的活动单元格为空时,宏结束。
答案 0 :(得分:2)
这就是工作:
Option Explicit
Sub MakeNameColumn()
' http://stackoverflow.com/questions/32804087/looping-through-rows-and-copy-cell-values-to-another-worksheet
' 2015-09-27 E/S/P
Dim shIn As Worksheet, shOut As Worksheet
Dim data As String
Dim j As Long, inCol As Long, inPos As Long, outPos As Long
Set shIn = Sheets("input")
Set shOut = Sheets("output")
outPos = 2
inPos = 2
inCol = Columns("BN").Column
Do
data = shIn.Cells(inPos, inCol).Text
If data = "" Then Exit Do
' copy to output sheet
For j = 0 To 8
shOut.Cells(outPos + j, 1).Value = data
Next j
outPos = outPos + 9
inPos = inPos + 1
Loop
shOut.Activate
End Sub
就像代码一样简单,它将向您展示如何使用构成VBA宏的元素:声明,寻址单元格,获取单元格内容,循环,尽可能避免使用“.select”语句等等。
但显然,这不是“代码外卖”服务。我看到你处在紧张状态。一旦你变得更熟练,请让其他人在StackOverflow上开始使用VBA。