如何将一行复制到多行?
How to copy one row to multiple rows?
我必须建立一个结合流程和国家/地区的列表。
我有 114 个进程和 55 个国家。
我必须像这样构建列表:
- 首次处理 55 次(55 个国家/地区)
- 第二次处理 55 次(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
我必须建立一个结合流程和国家/地区的列表。
我有 114 个进程和 55 个国家。
我必须像这样构建列表:
- 首次处理 55 次(55 个国家/地区)
- 第二次处理 55 次(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