VBA查找 - 查找范围错误

时间:2016-01-20 09:17:27

标签: excel vba vlookup

我已经筋疲力尽了所有的选择,所以我离开了你自己的怜悯。我试图在Excel中自动执行报告,但查找工作并不起作用。我们的想法是在每天刷新的数据透视表上进行查找,然后移动到下一个空白日并给出结果。我已经尝试过录制和查找工作,但每天它会将查找范围移到一列,我无法修复它。我的代码如下,任何帮助将不胜感激。

   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 个答案:

答案 0 :(得分:0)

只是一些事情......

  1. 正如FAURILLOU Amandine所说,我认为你可以将inRange作为范围(“B”& i)参考 - 同意。
  2. 正如达伦提到的那样使用配方 - 同意。
  3. 我会亲自查看数据透视表,并尝试引用数据透视表的数据范围,而不是引用它。就像我试图这样做的方式。这样,如果枢轴的位置发生变化,你就可以了。快速查看对象模型,它会像:

    工作表(“MV Pivot”)。数据透视表(“名称”).DataBodyRange

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

  5. 所有这一切,请放手一搏,看看它是否有效/解决了您的问题。

    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$36:$P$41")
        MsgBox (inRange)
        ActiveCell.Formula = Evaluate("=IFERROR(VLOOKUP(" & inRange.Address & "," & LookupRange.Address & ",5,FALSE),0)")
        ActiveCell.Offset(1, 0).Select
    Next i
    
    End Sub
    

    希望有所帮助。