我的代码需要帮助。我是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
非常感谢你的帮助。
答案 0 :(得分:1)
自动填充需要知道自动填充的范围,而不仅仅是顶部单元格。假设你遇到的唯一问题是在最后一部分,请尝试这样做:
With ActiveSheet.UsedRange
.Resize(.Rows.Count - 1).Offset(1).Columns("B"). _
SpecialCells(xlCellTypeVisible).FillDown
End With
或者它可以是.value = "Fulfilled"
而不是.Filldown
,具体取决于您要执行的操作。
也就是说,考虑重构代码以摆脱Select
,ActiveSheet
和Copy/Paste
内容并使用合格的范围。