Vba 循环使用索引和匹配函数

Vba 循环使用索引和匹配函数,vba,excel,indexing,match,Vba,Excel,Indexing,Match,我试图匹配新文档中的值,并从旧文档(我在代码中打开的文档)中提取相应的数据。但是,在设置要查找的数据的列中循环时遇到了问题。我想查找旧工作簿的I和V列中是否存在单元格I2&V2。然后,我希望它继续到下一行,检查单元格I3&V3等 我的代码是: Sub BCReport() Dim wbO As Workbook Dim wsO As Worksheet Dim wbJune As Workbook, wsJune As Worksheet Dim myRange As Range, myCPTR

我试图匹配新文档中的值,并从旧文档(我在代码中打开的文档)中提取相应的数据。但是,在设置要查找的数据的列中循环时遇到了问题。我想查找旧工作簿的IV列中是否存在单元格
I2
&
V2
。然后,我希望它继续到下一行,检查单元格
I3
&
V3

我的代码是:

Sub BCReport()
Dim wbO As Workbook
Dim wsO As Worksheet
Dim wbJune As Workbook, wsJune As Worksheet
Dim myRange As Range, myCPTRange As Range, myAllowedRange As Range
Dim JuneCPTRange As Range, JuneALLRange As Range, JuneMCPGRange As Range

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

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

Set myRange = wsO.Range("AI2:AI3000")
Set myCPTRange = wsO.Range("I2:I3000")
Set myAllowedRange = wsO.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

    myRange.FormulaArray = _
    myRange.FormulaArray = _
   "=INDEX('[Blue Cross 15_0615_P.xls]Combined'!$AI$2:$AI$790,MATCH(myCPTRange(i, 1).Value&myAllowedRange(i, 1).Value,'[Blue Cross 15_0615_P.xls]Combined'!$I$2:$I$790&'[Blue Cross 15_0615_P.xls]Combined'!$V$2:$V$790,0))"

    'Next j
Next i

End Sub
我不断收到错误“运行时错误“1004”:应用程序定义或对象定义错误”


任何想法都非常感谢

我录制了一个宏,以精确地生成您试图执行的操作,我发现它为我提供了R1C1符号来生成数组公式

替换代码的这一部分:

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

    myRange.FormulaArray = _
    myRange.FormulaArray = _
   "=INDEX('[Blue Cross 15_0615_P.xls]Combined'!$AI$2:$AI$790,MATCH(myCPTRange(i, 1).Value&myAllowedRange(i, 1).Value,'[Blue Cross 15_0615_P.xls]Combined'!$I$2:$I$790&'[Blue Cross 15_0615_P.xls]Combined'!$V$2:$V$790,0))"

    'Next j
Next i
用这个

With myRange

    .FormulaArray = "=INDEX('[Blue Cross 15_0615_P.xls]Combined'!C,MATCH(RC[-26]&RC[-13],'[Blue Cross 15_0615_P.xls]Combined'!C[-26]&'[Blue Cross 15_0615_P.xls]Combined'!C[-13],0))"        
End With

看看它是否有效。请记住,这会将代码循环出来,并将公式(和结果)直接放入Combined.xls工作表AI列中的单元格中。它还会查看每张工作表中设置的整个列,因此,如果单元格790之后有数据,则需要对此进行调整。

是否可以调试并检查哪一行出错。我怀疑这是你的公式。2次
myRange.FormulaArray=\uuz
似乎有点太多了。这个公式运行得很好,直到我尝试循环遍历单元格查看为止。对于FormulaArray,我尝试了myRange.test,但这产生了一个错误。编写vba的目的是什么,我想你不需要它,我可以帮你一个公式。