VBA代码在过滤另一列之后填充可见列
我需要帮助我的代码。 我是新来的VBA所以不太明白这样做的权利。 已经从另一个线索search答案,但它太先进,我不能跟着它。
这里是我想要的情况。 在列SI使用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
非常感谢您的帮助。
自动填充需要知道自动填充范围,而不仅仅是顶部单元格。 假设你唯一的问题是在最后一部分,试试这个:
With ActiveSheet.UsedRange .Resize(.Rows.Count - 1).Offset(1).Columns("B"). _ SpecialCells(xlCellTypeVisible).FillDown End With
或者它可能是.value = "Fulfilled"
而不是.Filldown
,取决于你想要做什么。
这就是说,考虑重构你的代码来摆脱Select
, ActiveSheet
和Copy/Paste
东西,并使用合格的范围。