【问题标题】:Copy a range of cells from one worksheet to another using VBA使用 VBA 将一系列单元格从一个工作表复制到另一个工作表
【发布时间】:2020-03-05 22:14:57
【问题描述】:

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

Sub Draft()

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

End Sub

我还需要将要复制的数据添加到存档表的表格底部,但我不知道该怎么做。

【问题讨论】:

  • 使用PasteSpecialTranspose:=True
  • 你喜欢一直粘贴在“A2”,还是下一个空行?
  • @BigBen 我编辑了我的代码,但它抛出了一条错误消息 Sub Draft() Worksheets("Material Check").Range("B3:B6").Copy _ Worksheets("Archive ").Range("A2:D2").PasteSpecial Transpose:=True End Sub
  • 这能回答你的问题吗? Excel VBA - Range.Copy transpose paste
  • 删除_ - 这应该是两个单独的行,这是行的延续。

标签: excel vba


【解决方案1】:

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

第一行使用从源中提取数据的公式填充目标范围,并使用 INDEX/COLUMN 转置结果。

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

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

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

''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

【讨论】:

  • 这并没有带来格式,OP 可能需要(或可能不需要,无法从问题中分辨出来)。
  • 不,但我将“从一系列单元格复制数据”仅表示数据。
  • 我不需要保留格式。但是我尝试了代码,它没有抛出任何错误消息并运行,但它实际上并没有粘贴任何数据。另外,这是我第一次做 VBA,这将通过非常少的理解和措辞不好的问题来解释哈哈
  • 您确定您完全复制了代码吗?我刚试了一下,对我来说效果很好......所有工作表名称和范围都正确吗?我刚刚注意到您还希望将数据添加到列表的底部。为此,我建议使用实际的表格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多