【问题标题】:VBA to look up value in table and copy formulaVBA在表格中查找值并复制公式
【发布时间】:2014-08-31 11:54:26
【问题描述】:

我有一个两列查找表。第 1 列是一个固定的项目列表,第 2 列中有一个公式。

在另一个表中,当有人在单元格 a1 中输入数据并且它与查找表的第 1 列中的项目匹配时,我需要将第 2 列中的相应公式复制并粘贴到单元格 b2 中。

许多谷歌搜索试图找到一种方法让 VLOOKUP 复制公式代替单元格值没有返回任何内容,所以我认为唯一的方法是通过 VBA?

【问题讨论】:

  • 是显示公式还是计算结果试试INDIRECT()
  • 我要计算公式的结果
  • 然后尝试将INDIRECTVLOOKUP 结合使用,向我们展示您遇到的问题

标签: excel excel-formula vlookup vba


【解决方案1】:

这个小样本假设数据在列 CD:

Sub Matt()
    Dim r As Range, Tabl As Range
    Set Tabl = Range("C1:C1000")
    Set r = Tabl.Find(What:=Range("A1").Value, After:=Tabl(1))
    Range("B1").Formula = r.Offset(0, 1).Formula
End Sub

A1 中放置一个值并运行宏

编辑#1:

此版本将循环向下列A

Sub Matt_The_Sequel()
    Dim r As Range, Tabl As Range, N As Long
    Set Tabl = Range("C1:C1000")
    N = Cells(Rows.Count, "A").End(xlUp).Row
    For i = 1 To N
        Set r = Tabl.Find(What:=Range("A" & i).Value, After:=Tabl(1))
        Range("B" & i).Formula = r.Offset(0, 1).Formula
    Next i
End Sub

编辑#2:

Sub Matt_The_Sequel2()
    Dim r As Range, Tabl As Range, N As Long
    Dim First_Row As Long
    Set Tabl = Range("C1:C1000")
    N = Cells(Rows.Count, "A").End(xlUp).Row

    First_Row = 4


    For i = First_Row To N
        Set r = Tabl.Find(What:=Range("A" & i).Value, After:=Tabl(1))
        Range("B" & i).Formula = r.Offset(0, 1).Formula
    Next i
End Sub

【讨论】:

  • 这是完美的,但是最后一个请求,只要 A2、A3 等中有条目,我将如何循环它以在单元格 B2、B3 等中重复?
  • 对不起最后一个...如果我想取消设置开始,例如:我希望循环从 A4 开始而不是 A1,因为我有几行标题等?顺便感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
相关资源
最近更新 更多