2017-02-24 83 views
1

我需要我的代碼幫助。我是VBA新手,所以不太明白這樣做的權利。已經從另一個線索搜索答案,但它太先進了,我無法遵循它。VBA代碼在過濾另一列之後填充可見列

這裏我想要的情況。 列S我使用vlookup從sheet3中查找匹配數據,並使用N/A值進行過濾。那麼我想用「Fulfilled」填充Q列中的可見數據,但我得到的是它填充了我的Q2的標題值,而不填充到最後一行。

Sheets("Sheet1").Select 
Range("S2").Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.ClearContents 

' vlookup from sheet3 

Range("S2").Select 
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-14],Sheet3!C[-16],1,0)" 
Selection.AutoFill Destination:=Range("S2:S" & Range("E" & Rows.Count).End(xlUp).Row) 
Range("S2").Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.Copy 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
Application.CutCopyMode = False 
Range("S2").Select 
ActiveSheet.Range("$A$1:$S$20000").AutoFilter Field:=19, Criteria1:="#N/A" 

' here it don't fill to last row 

Range("Q2").Select 
ActiveCell.FillDown 

非常感謝您的幫助。

回答

1

自動填充需要知道自動填充的範圍,而不僅僅是頂部單元格。假如你已經是在最後一部分是唯一的問題,試試這個來代替:

With ActiveSheet.UsedRange 
    .Resize(.Rows.Count - 1).Offset(1).Columns("B"). _ 
     SpecialCells(xlCellTypeVisible).FillDown 
End With 

或者它可能是.value = "Fulfilled"而不是.Filldown,這取決於你想要做什麼。

這就是說,想到重構你的代碼,以擺脫SelectActiveSheetCopy/Paste東西`和合格的範圍工作。

+1

非常感謝。它的工作。 –

+0

@RuzainiSubri歡迎:) –