我已经筋疲力尽了所有的选择,所以我离开了你自己的怜悯。我试图在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
答案 0 :(得分:0)
只是一些事情......
我会亲自查看数据透视表,并尝试引用数据透视表的数据范围,而不是引用它。就像我试图这样做的方式。这样,如果枢轴的位置发生变化,你就可以了。快速查看对象模型,它会像:
工作表(“MV Pivot”)。数据透视表(“名称”).DataBodyRange
虽然您使用公式查找数据透视表数据列,但您实际上可以调用Evaluate函数。如果在单元格中使用公式,如果数据透视表数据发生更改,它还将更改自公式以来的历史数据。您可以通过简单地对结果进行硬编码来解决这个问题。
所有这一切,请放手一搏,看看它是否有效/解决了您的问题。
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
希望有所帮助。