VBA代码在筛选另一列后填充可见列

时间:2017-02-24 02:16:48

标签: excel vba excel-vba

我的代码需要帮助。我是VBA的新手,所以不太明白这样做。已经从另一个帖子中搜索答案,但它太提前了,我无法遵循它。

这里是我想要的情况。 在第S列,我使用vlookup从sheet3中查找匹配数据,并使用N / A值过滤。然后我想用“已实现”来填充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 个答案:

答案 0 :(得分:1)

自动填充需要知道自动填充的范围,而不仅仅是顶部单元格。假设你遇到的唯一问题是在最后一部分,请尝试这样做:

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

或者它可以是.value = "Fulfilled"而不是.Filldown,具体取决于您要执行的操作。

也就是说,考虑重构代码以摆脱SelectActiveSheetCopy/Paste内容并使用合格的范围。