2016-09-16 2 views
0

이 코드를 사용하면 간단히 (Slade에게 감사드립니다) 필터링 된 범위를 복사하여 한 시트에서 다른 시트로 붙여 넣을 수 있습니다. 그러나 나는 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

관련 문제