复制直到最后一块数据

是否有可能select范围复制到最后一个项目?

Sheets("Design").Select Range("A1:C200").Copy 'My data only runs until E48 and Im left with 152 blancs. 

所以,现在它从A1复制到E200,但是如何编辑上面的代码,直到最后一个数据,在我的情况下是E48? (这是可变的)

谢谢!

@Jean

在我的Excel表中,我有从A1-A18运行的数据,B是空的,C1-C2。 现在我想复制所有包含值的单元格。

  With Range("A1") Range(.Cells(1, 1), .End(xlDown).Cells(20, 3)).Copy End With 

这将复制从A1到C20的所有内容,但我只希望A1-A18和C1-C2看起来好像这些包含数据。 但它需要以一种方式形成,一旦我有数据在B或我的范围扩展,这些也得到了复制。

这可能更清楚一点吗?

关于复制/粘贴情况;

我目前使用这个粘贴

 appWD.Selection.PasteSpecial ' So it copies the formats too? 'In your case, do you mean I should do it like this? Range(.Cells(1, 1), .End(xlDown).Cells(20, 3)).Copy Destination:=appWD.Selection.PasteSpecial 

这工作:

 With Range("A1") Range(.Cells(1, 1), .End(xlDown).Cells(1, 5)).Copy End With 

如果您需要不同数量的列,请更改“5”。

另外,我也学到了这个难题:尽可能避免复制/粘贴 ! 复制并粘贴使用剪贴板。 其他程序可能会在您的代码运行时从剪贴板中读取/写入,这会导致无法预料的结果。 但是,在同一行上复制到目标范围是安全的,即这样做

 Range(.Cells(1, 1), .End(xlDown).Cells(1, 5)).Copy myDestinationRange 

而不是这个

 Range(.Cells(1, 1), .End(xlDown).Cells(1, 5)).Copy myDestinationRange.Paste 

后者使用剪贴板,而前者不使用剪贴板。

这应该工作:

 a1 = Range("a1").Address lastcell = Range("E1").End(xlDown).Address Range(a1, lastcell).Copy 

如果适合你,我最喜欢的是CurrentRegion:

 Range("A1").CurrentRegion.Copy Destination:=Sheet2.Range("a1")