将特定条件下的一系列单元格粘贴到相同大小的目标范围内?

谢谢你的协助。 我无法在网上find这个解决scheme,所以这里是一个:P。 我想知道如何粘贴一个范围的值,在这种情况下,C6:R371,以相同的大小的另一个工作表。 我的问题是,我只想要将数据从源工作表粘贴到目标工作表上空白的单元格中,而不是更改目标工作表上范围C6:R371中的值。 从本质上讲,我有一个单元格的范围,我需要c&p,但是我想让macros只将范围内的值粘贴到目标范围的空白单元格上。 非常感谢

Range("C6:S371").Select Selection.Copy wbWest2.Activate Dim rng As Range Dim row As Range Dim cell As Range Set rng = Range("D9:S374") For Each row In rng.Rows For Each cell in row.Cells If cell.value = 0 then selection.paste Next cell Next row 

使用With … End With语句隔离这两个工作表,这样他们的单元格是唯一被考虑的单元格。 最快的比较是将两个范围批量加载到变体arrays中。

 Sub fill_blanks_from_source() Dim r As Long, c As Long, aSRCs As Variant, aDSTs As Variant With Worksheets("Sheet1") '<~~ source aSRCs = .Range("C6:R371").Value2 End With With Worksheets("Sheet2") '<~~ destination aDSTs = .Range("D9").Resize(UBound(aSRCs, 1), UBound(aSRCs, 2)).Value2 End With For r = LBound(aDSTs, 1) To UBound(aDSTs, 1) For c = LBound(aDSTs, 2) To UBound(aDSTs, 2) If Not CBool(Len(aDSTs(r, c))) Then aDSTs(r, c) = aSRCs(r, c) End If Next c Next r With Worksheets("Sheet2") .Range("D9").Resize(UBound(aDSTs, 1), UBound(aDSTs, 2)) = aDSTs End With End Sub 

一旦满足比较并且来自目的地的空白值填充了来自源的值,则整个变体数组被返回到目标工作表。

范围将始终保持相同的大小。 一旦源值被加载到第一个variables数组, LBound和UBound函数将用于从左上angular的单元格扩展的目标范围的所有进一步的尺寸标注 。