循环遍历行并将单元格值复制到另一个工作表

时间:2015-09-27 02:50:30

标签: excel vba excel-vba

意图:我有一个数据列表(输入)。列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中的活动单元格为空时,宏结束。

1 个答案:

答案 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。