【问题标题】:Macro to Auto Fill Down VLookUp Results down to last adjacent cell宏自动向下填充 VLookUp 结果向下到最后一个相邻单元格
【发布时间】:2015-12-23 12:03:17
【问题描述】:

我正在尝试创建一个宏来运行vlookup,然后自动填充到最后一个包含数据的相邻单元格。当我最初创建宏时,数据集包含 1917 行数据,这就是为什么您会继续看到它引用 1917。但是,数据集的大小每天都在变化。

这个特定的宏在到达这一点之前需要几个步骤:

  1. 将文本转换为列
  2. 删除从支持报告中提供的不必要的列
  3. 为 5 列添加标题
  4. 调整所有列的大小以修复数据
  5. 然后它运行第一个vlookup,我需要将数据填充到左侧最后一个相邻单元格
  6. 然后它运行另一个vlookup,我还需要填写到左侧最后一个相邻的单元格

这是我正在努力解决的两个vlookup 的代码:

Range("E2").Select
ActiveCell.FormulaR1C1 = _
    "=VLOOKUP(RC[-4],'CURRENT DAY'!R[-1]C[-4]:R[2498]C[1],5,0)"
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-4],'CURRENT DAY'!R1C1:R2500C6,5,0)"
Range("E2").Select
Selection.AutoFill Destination:=Range("E2:E1917")
Range("E2:E1917").Select
Columns("E:E").EntireColumn.AutoFit
Range("F2").Select
ActiveCell.FormulaR1C1 = _
    "=VLOOKUP(RC[-5],'CURRENT DAY'!R[-1]C[-5]:R[2498]C,6,0)"
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-5],'CURRENT DAY'!R1C1:R2500C6,6,0)"
Range("F2").Select
Selection.AutoFill Destination:=Range("F2:F1917")
Range("F2:F1917").Select

【问题讨论】:

  • 您似乎正在插入一个公式,然后立即用另一个公式替换该公式,而不是查看同一区域。选择“E2”单元格后查看这两行。
  • 那么,您想将 1917 与实际的最后一行编号交换吗?在这种情况下,您可能想看看这个问题:stackoverflow.com/questions/71180/…
  • 嗨,斯科特,感谢您查看此内容。它们是两个不同的 VLookUp。它运行一个 vlookup 并返回一条数据,然后我需要宏用公式填充列,直到最后一个具有与之相邻的数据的单元格。然后它需要执行相同的操作,但返回不同的数据。
  • vlookup 本身没有问题。我只是无法让宏将公式级联到该列中具有相邻数据的最后一个单元格
  • Helo Ralph,感谢您查看此内容。我相信你的分析是正确的。但是,我不确定如何在不破坏其余编码的情况下实现此更改。

标签: vba excel vlookup autofill


【解决方案1】:

不需要自动填充。只需在 A 列中找到最后一行并用它来表示放置 r1c1 公式的范围

Dim lastrow As Long
lastrow = Range("A2").End(xlDown).Row

Range("E2:E" & lastrow).FormulaR1C1 = "=VLOOKUP(RC[-4],'CURRENT DAY'!R1C1:R2500C6,5,0)"

Range("F2:F" & lastrow).FormulaR1C1 = "=VLOOKUP(RC[-5],'CURRENT DAY'!R1C1:R2500C6,6,0)"

Columns("E:F").EntireColumn.AutoFit

【讨论】:

    猜你喜欢
    • 2015-09-05
    • 2022-07-05
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 2016-08-16
    • 2017-04-10
    • 2012-08-09
    • 2012-06-30
    相关资源
    最近更新 更多