2016-07-15 6 views
0

만든 고급 필터를 기반으로 파일 내의 다른 워크 시트를 채우는 데이터 시트가 있습니다. 필요한 보고서에 따라 전체 필터가 아닌 고급 필터의 특정 열만 복사하면됩니다. 고급 필터가 아무것도 반환하지 않으면 (그 달에 일치하는 것이 없음을 의미) 스크립트는 아무 것도 복사하지 않고 붙여 넣기 대신 헤더를 복사하여 붙여 넣습니다. 고급 필터가 결과를 가져 오지 않을 때 헤더 복사 및 붙여 넣기를 피하는 방법에 대한 제안 사항은 무엇입니까? 비슷한 문제를 가지고 내 문제를 해결하는 방법을 참조 할 수 있습니다 사람들을 위해Excel VBA 동적 범위를 사용하여 복사 및 붙여 넣기 스크립트

Sub Populate() 

Dim sht As Worksheet 
Dim LastRow As Long 
Dim LastColumn As Long 
Dim StartCell As Range 

Set sht = Worksheets("Data") 


sht.Range("A1:S400").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ 
    Sheets("Sheet1").Range("A1:S12"), Unique:=False 


Set StartCell = sht.Range("G2") 
LastRow = sht.Cells(sht.Rows.Count, StartCell.Column).End(xlUp).Row 
LastColumn = sht.Cells(StartCell.Row, sht.Columns.Count).End(xlToLeft).Column 

    sht.Range(StartCell, sht.Cells(LastRow, "M")).Copy 
    Worksheets("OC 2016 - Post-65").Range("A18").PasteSpecial Paste:=xlPasteValues 


Sheet3.Columns().AutoFit 
Application.CutCopyMode = False 
+2

'LastRow> 2 then then'이라고 말하면됩니다. 'End If'를 잊지 마세요. –

+0

감사합니다. Scott, 누락 된 링크였습니다. 나는 그것을 작동 시켰어. – workswoop

답변

0

, 내가 게시합니다 내가 위에서 스콧의 대답에 감사를 편집 한 것 : 여기에 복사됩니다 첫 번째 워크 시트를위한 스크립트입니다. 저는 전문가가 아니므로 If 문을 잘못 배치했을 수도 있지만 현재 수행중인 작업에서 작동하고 있습니다.

Sub Populate() 

Dim sht As Worksheet 
Dim LastRow As Long 
Dim LastColumn As Long 
Dim StartCell As Range 

Set sht = Worksheets("Data") 


sht.Range("A1:S400").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ 
Sheets("Sheet1").Range("A1:S12"), Unique:=False 


Set StartCell = sht.Range("G2") 
LastRow = sht.Cells(sht.Rows.Count, StartCell.Column).End(xlUp).Row 
LastColumn = sht.Cells(StartCell.Row, sht.Columns.Count).End(xlToLeft).Column 

If LastRow > 2 Then 

sht.Range(StartCell, sht.Cells(LastRow, "M")).Copy 
Worksheets("OC 2016 - Post-65").Range("A18").PasteSpecial Paste:=xlPasteValues 

End If 

Sheet3.Columns().AutoFit 
Application.CutCopyMode = False 
관련 문제