VBA Lookup- 查找范围错误

VBA Lookup- lookup range error

我已经用尽了所有的选择,所以我只能任由你摆布。我正在尝试在 excel 中自动生成报告,但查找不起作用。这个想法是它在每天刷新的枢轴 table 上进行查找,然后移动到下一个空白日并给出结果。我试过录音并且查找有效,但每天它都会将查找范围移动一列,我无法修复它。我的代码如下,任何帮助将不胜感激。

   Range("B36").Select
    Selection.End(xlToRight).Select
    ActiveCell.Offset(0, 1).Select


  Dim row As Integer
    For i = 36 To 40


Set inRange = Range("B" & i & ":B" & i)
Set LookupRange = Sheets("MV Pivot").Columns("N:R")


MsgBox (inRange)

    ActiveCell.FormulaR1C1 = _
        "=IFERROR(VLOOKUP(" & inRange & "," & LookupRange & ",5,FALSE),0)"
                      ActiveCell.Offset(1, 0).Select
        Next I

谢谢

Logie143

只是一些事情..

  1. 正如 FAURILLOU Amandine 提到的,我认为您可以将 inRange 引用为 Range("B" & i) - 同意。
  2. 正如 Darren 提到的使用公式 - 同意。
  3. 我会亲自查看数据透视表 table,并尝试引用数据透视表的数据范围,而不是引用它。就像我会尝试做的那样。这样,如果枢轴的位置发生变化,你会没事的。快速查看了对象模型,它类似于:

    工作表("MV Pivot").数据透视表("The Name").DataBodyRange

  4. 虽然您使用公式来查找数据透视表列,但您实际上可以调用 Evaluate 函数。如果您在单元格中使用您的公式,如果数据透视 table 数据发生变化,它也会更改历史数据,因为它是一个公式。您可以通过简单地对结果进行硬编码来解决这个问题。

综上所述,请试一试,看看是否works/fixes是您的问题。

Sub Test()

Range("B36").Select
Selection.End(xlToRight).Select
ActiveCell.Offset(0, 1).Select

Dim inRange As Range, LookupRange As Range
Dim row As Integer, i As Integer

For i = 36 To 40
    Set inRange = Range("B" & i)
    Set LookupRange = Range("$K:$P")
    MsgBox (inRange)
    ActiveCell.Formula = Evaluate("=IFERROR(VLOOKUP(" & inRange.Address & "," & LookupRange.Address & ",5,FALSE),0)")
    ActiveCell.Offset(1, 0).Select
Next i

End Sub

希望对您有所帮助。