2015-09-18 180 views
0

我正在嘗試編寫一個使用我當前工作簿的代碼,並打開另一個工作簿,然後使用Index和Macth查找比較兩種類型的條件,從而比較兩者中的數據。VBA索引和匹配

Sub BCReport() 
Dim wbO As Workbook 
Dim wsO As Worksheet 
Dim wbJune As Workbook, wsJune As Worksheet 

Set wbO = ThisWorkbook 
Set wsO = wbO.Sheets("Combined") 

Set wbJune = Workbooks.Open("J:\15_0615_P.xls") 
Set wsJune = wbJune.Sheets("Combined") 

Set myRange = wsO.Range("AI2:AI3000") 
Set myCPTRange = wsO.Range("I2:I3000") 
Set myALLRange = ws0.Range("V2:V3000") 

Set JuneCPTRange = wsJune.Range("I2:I3000") 
Set JuneALLRange = wsJune.Range("V2:V3000") 
Set JuneMCPGRange = wsJune.Range("AI2:AI3000") 

For i = 1 To myRange.Rows.Count 
    For j = 1 To myRange.Columns.Count 

test = Application.WorksheetFunction.Index(JuneMCPGRange, Application.WorksheetFunction.Match(myCPTRange.Cells(i, j).Value & myALLRange.Cells(i,j).value, JuneCPTRange & JuneALLRange, 0)) 
    Next j 
Next i 

End Sub 

我在做什麼esentially是我從七月(我目前的文件)的文件,並從六月文件(其中我在代碼中希望了)。我想查看「CPT」代碼和他們相應的「ALL」金額,並從6月份搜索我以前的電子表格,如果兩條標準中的任何行匹配,我想將我在JuneMCPGRange中的內容輸出到原始文檔的單元格中這與目前正在查找的CPT和所有金額一致)

如果任何人有任何幫助,將是偉大的!

非常感謝。

+0

你的實際問題是什麼?有錯誤嗎?如果是這樣,在什麼路線和什麼是錯誤描述? –

+0

運行時錯誤424:對象必需,我忘記添加在我的代碼上面定義範圍作爲範圍,但仍然收到對象錯誤 –

+0

猜測你的'Match'函數返回一個錯誤,所以它返回一個'Nothing'對象,這會給你424的錯誤。嘗試在立即窗口中執行'Application.WorksheetFunction.Match'。 –

回答

1

這兩個工作表的引用是不同的...

Set myCPTRange = wsO.Range("I2:I3000") 
Set myALLRange = ws0.Range("V2:V3000") 

如果你總是在每一個模塊的頂部使用Option Explicit,你可以從這種類型的錯誤保存自己。

編輯: 我不認爲你可以運行一個多值匹配查找像在VBA:你可以做的最好的是地址範圍,構建適當的公式使用,那麼使用wsO.Evaluate(你的formulahere)運行它並獲得輸出。

參見例如最後回答在這裏:Concat multiple MATCH criteria in Excel VBA

+0

是啊,我注意到,並希望它修復它,但我仍然得到對象錯誤 –