2017-02-24 7 views
1

私のコードで助けが必要です。私はVBAの初心者ですので、このことを正しく理解することはできません。すでに別のスレッドから回答を検索していますが、あまりにも進んでいます。私はそれに従うことができません。VBAコード別の列をフィルタした後に表示列を塗りつぶす

ここで私が望む状況。 (列S)vlookupを使用してsheet3の一致データを検索し、N/A値のフィルタを使用します。 Q列の可視データを「Fulfilled」で塗りつぶしたいのですが、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 stuff`を削除し、修飾された範囲で作業するとします。

+1

ありがとうございます。それは働いた。 –

+0

@RuzainiSubriあなたは歓迎です:) –

関連する問題