复制直到最后一块数据
是否有可能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")