vba - 如何从一个工作表中复制特定列并粘贴到另一个工作表中的不同范围内?

标签 vba excel basic

我是初学者,下面有这段代码,但这只是从工作表中复制最后一行并粘贴到工作表 2 范围内。基本上空行没有得到更新。并且还会抛出运行时错误 1004 - 应用程序定义或对象定义错误。任何帮助将非常感激。

Sub copypaste()
Dim lastrow As Long, erow As Long

lastrow = ThisWorkbook.Worksheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lastrow

Sheet1.Cells(i, 3).Copy
erow = ThisWorkbook.Worksheets("sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Sheet1.Paste Destination:=Worksheets("Sheet2").Cells(erow, 2)
Sheet1.Cells(i, 14).Copy
Sheet1.Paste Destination:=Worksheets("Sheet2").Cells(erow, 4)
Sheet1.Cells(i, 6).Copy
Sheet1.Paste Destination:=Worksheets("Sheet2").Cells(erow, 3)

Next i

Application.CutCopyMode = False
ThisWorkbook.Worksheets("sheet2").Columns().AutoFit
Range("A1").Select

End Sub

假设这是第 1 页
sheet 1

这是sheet2:
sheet2:

标题在命名上略有不同,并且位置也发生了变化。并且表 1 中的最后一行是变化的。

最佳答案

试试这个,总是更好地避免复制和粘贴。

Sub copypaste()
Dim lastrow As Integer, erow As Integer, sheet1 As Worksheet, sheet2 As Worksheet

Set sheet1 = Worksheets("Sheet1")
Set sheet2 = Worksheets("Sheet2")
lastrow = sheet1.Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To lastrow
    erow = sheet2.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row
    sheet2.Cells(erow, 2) = sheet1.Cells(i, 3)
    sheet2.Cells(erow, 3) = sheet1.Cells(i, 6)
    sheet2.Cells(erow, 4) = sheet1.Cells(i, 14)
Next i

'ThisWorkbook.Worksheets("Sheet2").Columns().AutoFit
'sheet1.Cells(1, 1).Activate
End Sub

关于vba - 如何从一个工作表中复制特定列并粘贴到另一个工作表中的不同范围内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37165902/

相关文章:

excel - 如何计算整个工作簿,但不是所有打开的工作簿?

sql - 如何将 VBA 连接到 postgreSQL 并运行查询

BASIC 编程语言获取变量

excel - 值更改时更新/时间戳到单元格中

Excel VBA 在同一过程中处理多个错误

vba - 在循环中删除工作簿变量

arrays - 在 Excel 中查找多列并对它们的值求和

excel - 最快的矩阵逆Excel VBA

mysql - 如何使用查询写入 VB.net 中的 Mysql 数据库

.net - 在 Visual Basic 中转换为整数时如何确定舍入方向