2016-01-23 90 views
2

我需要的所有數據複製在P型柱:這Y和粘貼到一個空白單元格列A複製可變範圍

我已經寫了下面的代碼,除了正在複製的數據(P:Y)在整個列中包含公式以外,它工作正常,儘管爲了只返回值而粘貼值,但它將所有單元格計數爲包含數據。

通過這個我的意思是,當我第一次運行宏,它的工作原理。但是當我找到最後一個空行時再次運行它(我需要這樣做)。這不是最後一排空行!它選擇一行遠遠低於我可以看到數據的實際最後一行。

空行中沒有數據,也沒有任何公式,但由於某種原因超出了我的範圍,它將行視爲不是空的。

通過公式在列P:Y中返回的數據每月都會更改,所以我無法定義特定的範圍。

我該如何修改代碼來糾正這種情況 - 還是有更好的方法可以做到這一點?

Sub SelectRangea() 

    Sheets("Set Up Data").Select 
    Range("P2:Y10000").Select 
    Application.CutCopyMode = False 
    Selection.Copy 

With Sheets("Pasted Report") 
    lst = .Range("A" & Rows.Count).End(xlUp).Row + 1 
    .Range("A" & lst).PasteSpecial xlPasteColumnWidths 
    .Range("A" & lst).PasteSpecial xlPasteValues 

End With 

End Sub 

回答

2

當單元格包含公式時,即使在檢查工作表上的單元格時它看起來爲空,它也會有一個值。因此,如果您複製這些看起來空的單元格並將它們粘貼到其他位置(即使只是作爲值),粘貼到單元格的單元格現在確實包含某些內容(即,它們不再是真的空;它們是一個空字符串,的VBA的空)。

Range.End然後將移動到最後一個空單元,而不是移動到最後一個真正的填充單元。

如果您在空白工作表上手動執行此操作,請輸入A1:A5 formula =「」,然後將範圍值複製到B1:B5,然後選擇B10,然後按Ctrl-向上。

解決的辦法是使用Range.End方法,然後檢查單元格內容向上。或者使用Range.Find,但請記住,這也會改變用戶查找對話框中的設置。