2016-01-20 136 views
0

我已經用盡了所有選項,所以我只剩下自己拋棄了你的憐憫。我試圖在Excel中自動生成一個報告,但查找只是不起作用。它的想法是在每天刷新的數據透視表上進行查找,然後移動到下一個空白的日子並給出結果。我嘗試過錄制和查找,但每天都會將查找範圍移到一列,並且無法修復。我的代碼如下,任何幫助將不勝感激。VBA查找 - 查找範圍錯誤

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

你在問vba輸入公式vlookup(B36:B36; N1:R104 ..; 5;)吧?你有沒有嘗試用B36代替B36:B36,或者在你的情況下是「B」,我也是......「 –

+0

另外,你是否嘗試避免使用select,而是用你寫入的單元格的座標? 36,2)爲B36,因此有lastcell =單元格(36,2).End(xlToRight);和lastcell.offset(0,1)? –

+2

'ActiveCell.FormulaR1C1'期望R1C1格式的公式,而不是A1格式,嘗試'ActiveCell.Formula'。此外 - 不知道這個雖然 - inRange.Address'和'LookupRange.Address'內公式。 –

回答

0

短短几年的東西..

  1. 作爲FAURILLOU阿曼迪妮提到的,我覺得你可以參考INRANGE的範圍( 「B」 & I) - 同意。
  2. 由於達倫提到使用公式 - 商定。
  3. 我會親自看一下數據透視表,並嘗試引用數據透視的數據範圍,而不是引用它。只是我會盡力去做的方式。這樣,如果關鍵點的位置改變了你會沒事的。有一個非常快速瀏覽一下對象模型,它會是這樣的:。

    工作表(「MV透視」)的數據透視表(以下簡稱「名」)DataBodyRange

  4. 雖然你用一個公式來查找樞軸數據列,您實際上可以調用評估函數。如果您在單元格中使用公式,如果數據透視表數據發生更改,它也會更改自其公式以來的歷史數據。你可以通過對結果進行硬編碼來解決這個問題。

所有這一切,請給這個去看看它是否工作/修復你的問題。

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 

希望有所幫助。

+0

好點 - 參考數據透視表Jon Peltier在如何引用不同部分方面有很好的一頁:http://peltiertech.com/referencing-pivot-table-ranges-in-vba/ –

+0

真正有用的鏈接,謝謝PaulG – Logie143