【问题标题】:VBA instead of vlookupVBA 代替 vlookup
【发布时间】:2020-03-03 20:21:42
【问题描述】:

我刚开始使用 VBA。 我有一个有两张纸的工作簿。在第一张纸上,在“D”列中,我有零件编号。 在第二张纸上,我再次在“A”列中有部件号,在“B”列中有每个部件号的描述。 在 Sheet1 上,我想收集以下数据:

  • 如果 Sheet2 列“A”包含来自 Sheet1 列“D”的零件号,则列“O”值需要是 Sheet2 列“B”。

现在通过录制宏自己使用Vlookup:

Application.CutCopyMode = False
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-11],'RIG MB'!C[-14]:C[-13],2,0)"
    Range("O2").Select
    Selection.AutoFill Destination:=Range("O2:O3430")
    Range("O2:O3430").Select

我需要一个 vba 代码,但不是 vlookup 工作表功能,我需要更快的东西。 我也想循环它,直到 Sheet1 列“D”中有数据。 提前谢谢你!

【问题讨论】:

  • 希望不使用“Vlookup()”或任何其他功能就不可能带来数据。如果是宏,还需要使用“Vlookup()”或任何其他匹配函数。我已经通过录制宏尝试了您的方法,它通过自动“Vlookup()”工作正常并粘贴特殊相同。如果您想知道录制宏的步骤,请告诉我,我会在答案中发布相同的内容。
  • 我录制了宏,但是速度很慢,因为我已经使用了 5000 多行。我需要一个代码,它处理行直到它们有值,而不是一个确切的范围(因为我向 Sheet2 添加了更多行,所以我现在也必须更新宏
  • 您能否通过修改您的问题上传查询。您已经尝试通过录制宏。所以,可以理解为什么它很慢。
  • 可以用字典,会快很多。

标签: excel vba conditional-statements vlookup


【解决方案1】:

这是一个不循环的示例,但应该比 VLOOKUP 更快:

Range("O2:O3430").Formula = "=INDEX('RIG MB'!B:B, MATCH(D2, 'RIG MB'!A:A, 0))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多