2017-02-24 4 views
1

Ich brauche Hilfe mit meinem Code. Ich bin neu bei VBA, verstehe also nicht ganz richtig. Such schon Antwort von einem anderen Thread, aber es geht auch voran Ich kann es nicht folgen.VBA-Code Füllen Sie sichtbare Spalte nach Filter eine andere Spalte

Hier die Situation, die ich will. in Spalte S Ich verwende vlookup, um Match-Daten von Blatt3 zu finden und mit N/A-Wert zu filtern. dann möchte ich die sichtbaren Daten in Spalte Q mit "Fulfilled" ausfüllen, aber was ich bekomme, ist, dass es mein Q2 mit Header-Wert füllt und nicht bis zur letzten Zeile füllt.

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 

Vielen Dank für Ihre Hilfe.

Antwort

1

Autofill muss den Bereich kennen, der automatisch gefüllt werden kann, nicht nur die oberste Zelle. Nimmt man das einzige Problem, das Sie haben, ist im letzten Teil, versuchen Sie stattdessen:

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

Oder könnte es .value = "Fulfilled" statt .Filldown sein, je nachdem, was Sie tun möchten.

That said, denken Sie an Refactoring Ihres Codes, um die Select, ActiveSheet und Copy/Paste Zeug loszuwerden und arbeiten mit qualifizierten Bereichen.

+1

vielen Dank. Es hat funktioniert. –

+0

@RuzainiSubri du bist willkommen :) –

Verwandte Themen