2011-03-16 67 views
0

是否可以選擇一個範圍複製到最後一個項目?複製到最後一塊數據

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 

回答

2

這工作:

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 

後者使用剪貼板,而前者沒有。

+0

謝謝,那麼你如何在我的情況下推薦這個? 現在它會從A1下降到A5,還是A1下降到E1下降?這隻會複製有數據的單元格? 避免複製/粘貼是什麼意思?表格(「1」)。範圍(「B1」)。複製目的地:=表格(「2」)。範圍(「A1」)。值 類似的東西? – CustomX 2011-03-17 09:53:34

+0

這也複製blancs,只能選擇包含數據的字段嗎? – CustomX 2011-03-17 10:12:51

+0

這麼多問題......我使用Range屬性的方式是Range(UpperLeftCell,LowerRightCell)。將選擇由這些左上角和右下角定義的整個「矩形」。 – 2011-03-17 10:19:12

2

這應該工作:

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

這隻會複製A列... – 2011-03-17 08:20:57

+0

所以它。現在我已經修復了它,所以它確實如問題所述,列到E列。 – paulmorriss 2011-03-17 09:02:29

+0

這不是隻複製A1-B1 ...- D1-E1:E48嗎?在我的情況? – CustomX 2011-03-17 10:06:40

0

如果適合你的,我最喜歡的是CurrentRegion:

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

小心:如果您有相鄰列中的數據(列F,G ...),這也將被複制。 – 2011-03-17 08:30:03

+0

@JFC:對,因此我的警告「如果適合你」 – 2011-03-17 09:26:06

+0

謝謝,我會試試看 – CustomX 2011-03-17 09:59:03

相關問題