【问题标题】:Copy and paste multiple cells without overwriting existing cells EXCEL VBA复制和粘贴多个单元格而不覆盖现有单元格 EXCEL VBA
【发布时间】:2015-06-12 20:05:44
【问题描述】:

寻求指导。

我正在尝试将 4 个工作表中的所有单元格复制到主工作表中。

我可以将一张数据复制到主表格,但是当我复制第二张表格时,它会覆盖之前复制到主表格的信息。

这是我目前用来复制数据的代码。

Sub Create_Master ()

    Dim sourceColumn As Range, targetColumn As Range

    Set sourceColumn = Worksheets("Sheet1").Columns("A:P")
    Set targetColumn = Worksheets("Master Sheet").Columns("A:P")

    sourceColumn.Copy Destination:=targetColumn

End sub

有什么想法吗?

干杯亚当

【问题讨论】:

  • 遍历每个单元格,检查这个单元格是否已经有主表上的信息,如果没有,复制它
  • 您希望如何在 Master 表上排列所有数据?如果要将每个集合粘贴到前一个集合下,则需要弄清楚如何仅复制包含数据的范围:您不能复制整列。
  • 大家好,感谢您回复我,日期需要显示的方式如下。如果四张表中的每一张都包含从 A:P 列开始的 15 行数据,则第一组数据将从 A1:P15 开始显示,第二组从 A:16:P31 开始显示 - 依此类推。

标签: vba excel


【解决方案1】:

这样的事情可能对你有用......

Sub Create_Master ()

Dim sourceSheet As Worksheet
Dim sourceRange As Range
Dim sourceRows As Integer

Set sourceSheet = Worksheets("Sheet1")

sourceRows = WorksheetFunction.CountA(sourceSheet.Range("A:A"))

Set sourceRange = sourceSheet.Range("A1:P" & sourceRows)

Dim targetSheet As Worksheet
Dim targetRange As Range
Dim targetRows As Integer

Set targetSheet = Worksheets("Master Sheet")

targetRows = WorksheetFunction.CountA(targetSheet.Range("A:A"))

Set targetRange = targetSheet.Range("A" & targetRows + 1 & ":P" & targetRows + 1 + sourceRows)

sourceRange.Copy Destination:=targetRange

结束子

它使用工作表函数“CountA”来计算有多少行正在使用,假设总是填充 A 列单元格,并且在要复制的内容下方的该列中没有任何数据。如果源表和主表上有列标题,那么它们将被重复。所以你可能想让 sourceRange 从 A2 开始。

HTH。

【讨论】:

    猜你喜欢
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多