2016-09-16 19 views
0

使用此代碼我簡單地(感謝Slai)將篩選範圍從一個工作表複製並粘貼到另一個工作表。不過,我試圖通過將另一個過濾的範圍附加到HAA工作表來複制此代碼,但由於某種原因它選擇了第11行並粘貼了數據。將篩選範圍追加到工作表

Sub Run() 

    Application.ScreenUpdating = False 

    Dim x As Long 
    Dim rf As Range, wsTo As Worksheet, wx As Range 

    Set rf = ThisWorkbook.Sheets("Table").UsedRange 
    Set wsTo = Sheets("HAA") 
    Set wx = ThisWorkbook.Sheets("HAA").UsedRange 

    x = Range("B" & Rows.Count).End(xlUp).Row 

    rf.AutoFilter 
    rf.AutoFilter 12, "associated" 
    rf.Copy 

    wsTo.Range("A1").PasteSpecial xlPasteValues 

    rf.AutoFilter 
    rf.AutoFilter 12, "not found" 
    rf.Offset(1, 0).Copy 

我改變了這個(下)選擇要看到它被粘貼的數據,原本.PasteSpecial xlPasteValues

wsTo.Range("A1" & x).Select 

    Application.ScreenUpdating = True 

End Sub 
+0

什麼工作是你想獲得最後的填充行(例如** x **)來自?爲什麼不抵消獲得第一個可用的空白單元格?例如'x = wsTo.Range(「B」&Rows.Count).End(xlUp).OFFSET(1,0).Row'它看起來應該是'wsTo.Range(「A」&x).Select' 。 – Jeeped

+0

你會添加一些輸入和期望結果的例子嗎? – user3598756

+0

@Jeeped x = wsTo.Range(「A」&Rows.Count).End(xlUp).Offset(1,0).Row 這樣,它會粘貼現有數據。 – FonR

回答

0

最後一排後粘貼,這樣的:

Dim rangeTo As Range 
Set rangeTo = wsTo.UsedRange ' or = wsTo.Range("A1").CurrentRegion 
Set rangeTo = rangeTo.Offset(rangeTo.Rows.Count)(1) ' (1) is to get the first cell 
Application.Goto rangeTo ' optional if you want to see where the values will be pasted 
rangeTo.PasteSpecial xlPasteValues 

代碼中的問題是,在粘貼和過濾數據之前,您會得到最後一行。此外,Range(通常是指當前活動的表可能並不總是你想要的,所以最好到指定範圍之前的紙張:

x = wsTo.Range("B" & wsTo.Rows.Count).End(xlUp).Row 
+0

現在我得到了rangeTo.PasteSpecial xlPasteValue 所需的對象,但我認爲在執行此操作之前已經識別出它。 – FonR

+0

@FonR在粘貼之前是否忘記複製數據? – Slai

+0

給我一點時間想想這個。 – FonR