如何将一行复制到多行?

How to copy one row to multiple rows?

我必须建立一个结合流程和国家/地区的列表。

我有 114 个进程和 55 个国家。

我必须像这样构建列表:

示例:

我正在考虑这段代码:

Sub Copydata()
    
    Dim i As Long
    Dim y As Long
    Dim sht As Worksheet
    Dim lastrow As Long
    
    Set sht = ThisWorkbook.Sheets("Sheet2")
    lastrow = sht.Cells(sht.Rows.Count, "A").End(x1Up).Row
    
    Worksheets("Sheet2").Activate
    Dim A
    
    For i = 1 To lastrow
        For y = 1 To 55
            Sheet3.Cells(y, 1) = Sheet2.Cells(i, 1)
        Next y
    Next i
    
End Sub

这应该添加到 Sheet 3, 55 次流程 1 然后移动到流程 2 等(我可以处理国家部分,之后。)

我明白了

runtime error 1004

您的代码存在一些问题。导致运行时错误的是 vba const xlUp 的拼写错误,您将其作为 x1Up (数字 1 而不是字母 l)。

此外,您可以通过更一致地使用变量来稍微清理一下。通过工作簿或通过 sheet 代号获取对 sheet 的引用。在您的代码中,您同时执行这两项操作。我还喜欢在 Cells 对象上看到更明确的值分配。不要将单元格设置为彼此相等,而是设置 Cell.Value。这是我建议的轻微修改:

编辑: 我已经更新了代码以执行您在评论中描述的内容。

Sub Copydata()

    Dim i As Long
    Dim y As Long
    Dim sht2 As Worksheet
    Dim sht3 As Worksheet
    Dim lastrow As Long
    
    Set sht2 = ThisWorkbook.Sheets("Sheet2")
    Set sht3 = ThisWorkbook.Sheets("Sheet3")
    lastrow = sht2.Cells(sht2.Rows.Count, "A").End(xlUp).Row
    
    y = 1
    
    For i = 1 To lastrow
        For y = y To y + 54
            sht3.Cells(y, 1).Value = sht2.Cells(i, 1).Value
        Next y
    Next i

End Sub