首页 > 解决方案 > 如何将一行复制到多行?

问题描述

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

我有 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

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

我明白了

运行时错误 1004

标签: excelvbacopy-paste

解决方案


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

此外,您可以通过更一致地使用变量来稍微清理一下。通过工作簿或工作表代码名称获取对工作表的引用。在您的代码中,您两者都做。我还希望看到对 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

推荐阅读