如何在过滤范围内填写Vlookup | Excel VBA

问题描述 投票:-3回答:2

谢谢你的帮助!在vba中需要帮助来编写用于过滤我的数据的宏,然后将vlookup仅应用于过滤范围。

EX)

OrderTable - 订单列表及其相应的状态,(有些简单,有些模糊)

StatusTable - 包含所有模糊订单的列表,但包含更多详细信息

每个表都包含在同一工作表中的单独选项卡上。在编写VBA时,我需要帮助将OrderTable过滤为仅模糊的状态订单,然后是vlookup填充,以便我们可以引用StatusDetails表来检索更准确的状态。我们需要保持原始状态,如果不是“模糊”,所以a = iferror不会在这里帮忙

(基本上,我们在“模糊”订单上留下了一个excel离开加入)

这一切都发生在具有数千个订单的工作表上(引入更复杂的描述),一天多次。

订单表

状态表

我遇到的问题是这是一个动态范围,在过滤后...单元格B3中的顺序并不总是“模糊”,该范围内的第一个“模糊”单元格有时可能是B2或B5,具体取决于哪个订单尚未履行

Sub Test_macro()

    Range("$A$1:$B$6").AutoFilter Field:=2, Criteria1:="Vague"
    ActiveCell.FormulaR1C1 = "=VLOOKUP(B3),StatusTable!A:B,2,0)"
    Sheet1.Range("B3", "B" & Cells(Rows.Count, 1).End(xlUp).Row).FillDown

End Sub

感谢您的耐心等待

excel vba excel-vba vlookup
2个回答
2
投票

使用SpecialCells

Sub Test_macro()

Sheet1.Range("A1:B6").AutoFilter Field:=2, Criteria1:="Vague"
Sheet1.Range("B2:B" & Cells(Rows.Count, 1).End(xlUp).Row).SpecialCells(xlCellTypeVisible).FormulaR1C1 = "=VLOOKUP(RC[-1],StatusTable!C1:C2,2,FALSE)"
Sheet1.ShowAllData

End Sub

0
投票

为何过滤?只需应用带有错误捕获的Vlookup。

=iferror(Vlookup(bla),"")
© www.soinside.com 2019 - 2024. All rights reserved.