Excel 使用VBA将一系列单元格从一个工作表复制到另一个工作表

Excel 使用VBA将一系列单元格从一个工作表复制到另一个工作表,excel,vba,Excel,Vba,我不熟悉使用VBA,需要将数据从一个工作表上的一系列单元格复制到另一个工作表。我需要复制一列单元格并将其粘贴到一行单元格中,例如A1:A4到A1:D1。这是我正在使用的代码,但它也不能按我需要的方式工作 Sub Draft() Worksheets("Material Check").Range("B3:B6").Copy _ Destination:=Worksheets("Archive").Range("A2:D2") End Sub 此外,我需要将正在复制的数据添加到存档表的表格底

我不熟悉使用VBA,需要将数据从一个工作表上的一系列单元格复制到另一个工作表。我需要复制一列单元格并将其粘贴到一行单元格中,例如A1:A4到A1:D1。这是我正在使用的代码,但它也不能按我需要的方式工作

Sub Draft()

Worksheets("Material Check").Range("B3:B6").Copy _
Destination:=Worksheets("Archive").Range("A2:D2")

End Sub

此外,我需要将正在复制的数据添加到存档表的表格底部,我不确定如何执行此操作。

如果没有Excel表格

这是一种有点奇怪的方法,但是如果您有很多单元格要做,那么它可能比复制/粘贴速度更快:

ThisWorkbook.Worksheets("Archive").Range("A2:D2").Formula = "=INDEX('Material Check'!$B$3:$B$6,Column())"
ThisWorkbook.Worksheets("Archive").Range("A2:D2").Value = ThisWorkbook.Worksheets("Archive").Range("A2:D2").Value
第一行用一个公式填充目标范围,该公式从源中提取数据,使用索引/列转置结果

第二行只是将公式转换为硬值

编辑-将值复制到列表底部的解决方案
使用Excel表格

为此,您需要转到“插入”-->“表格”


使用
PasteSpecial
Transpose:=True
一起使用。您想将所有时间都粘贴到“A2”中,还是粘贴到下一个空行?@BigBen我编辑了我的代码,但它会弹出一条错误消息Sub Draft()工作表(“材料检查”).Range(“B3:B6”).Copy.\uWorksheets(“存档”).Range(“A2:D2”).PasteSpecial Transpose:=True End sub这是否回答了您的问题?删除
-这应该是两个独立的行,这是行的延续。但这并没有带来格式,OP可能需要(或者可能不需要,从问题中看不出来)。没有,但我认为“从单元格范围复制数据”只是指数据。我不需要格式来延续。但我尝试了代码,它没有抛出任何错误消息并运行,但它实际上没有粘贴任何数据。另外,这是我第一次做VBA,它会用非常简单的理解和糟糕的问题来解释哈,你确定你准确地复制了代码吗?我刚试过,对我来说很好。。。所有图纸名称和范围是否正确?我刚刚注意到,您还希望将数据添加到列表的底部。为此,我建议使用实际的表格。
''Get a reference to your destination table
Dim Tbl1 As ListObject
Set Tbl1 = ThisWorkbook.Sheets("Archive").ListObjects("Table1") ''Change these to your destination sheet/table names

''add a new row to the table
Dim Newrow As ListRow
Set Newrow = Tbl1.ListRows.Add

''populate the new row
With Newrow
    .Range(Tbl1.ListColumns("Column1").Index) = ThisWorkbook.Worksheets("Material Check").Range("B3") ''change these to your destination column name and your source sheet/ranges
    .Range(Tbl1.ListColumns("Column2").Index) = ThisWorkbook.Worksheets("Material Check").Range("B4")
    .Range(Tbl1.ListColumns("Column3").Index) = ThisWorkbook.Worksheets("Material Check").Range("B5")
    .Range(Tbl1.ListColumns("Column4").Index) = ThisWorkbook.Worksheets("Material Check").Range("B6")
End With