【发布时间】:2015-12-15 21:56:17
【问题描述】:
我正在尝试编写一个代码,该代码使用我当前的工作簿并打开另一个工作簿,然后使用 Index 和 Macth 查找比较两种类型的标准来比较两者的数据。
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
我所做的基本上是我有一个 7 月的文件(我当前的文件)和一个 6 月的文件(我希望在代码中出现的文件)。我想查看“CPT”代码及其对应的“ALL”金额,并搜索我从 6 月开始的以前的电子表格,如果有任何行在这两个条件中匹配,我想将 JuneMCPGRange 中的内容输出到原始文档的单元格中(这与 CPT 和当前正在查找的所有金额一致)
如果有人有任何帮助,那就太好了!
非常感谢。
【问题讨论】:
-
您的实际问题是什么?有错误吗?如果是这样,在哪一行,错误描述是什么?
-
运行时错误 424:需要对象,我忘了在上面的代码中添加将范围定义为范围的代码,但我仍然收到对象错误
-
猜测您的
Match函数正在返回一个错误,所以它返回一个Nothing对象,这会给您 424 错误。尝试在即时窗口中执行Application.WorksheetFunction.Match。 -
你认为是因为我一开始就定义了范围吗?只留下 JuneMCPGRange?我的意思是我在上面定义了,所以我认为它会理解查看的位置
-
否,如果 Match 函数找不到该值,则应返回
#N/A。