【问题标题】:INDEX MATCH with two criteria - Automation error具有两个条件的索引匹配 - 自动化错误
【发布时间】:2017-08-21 14:55:04
【问题描述】:

我正在尝试使用 WorksheetFunctions 而不是 Excel 公式运行索引/匹配查询。

该函数对外部工作簿 (extwbk) 中的一个区域进行索引,并将 extwbk 的 A 列中的存储编号与 ActiveWorkbook 中的存储编号 col A 匹配,并将月份 (sCurrMth) 与 extwbk 的第 1 行中的月份匹配。 Match Store#&Aug to come back with store accounting period in fin year

我声明了变量,设置了一些值,但是当我到达

使用 fNameAndPath.Worksheets("Sheet1")

当我从 fNameAndPath.Worksheets("Sheet1") 更改为 ActiveWorkbook.ActiveSheet 时,我得到运行时错误 '424' Object required on a different line

.Cells(rw, 10) = Application.WorksheetFunction.Index(x, Application.WorksheetFunction.Match(fNameAndPath.Range("A2"), extwbk.Worksheets("信息表").Range("A1:A " & 行数), 0), _ Application.WorksheetFunction.Match(sCurrMth, extwbk.Worksheets("Info Sheet").Range("1:1"), 0))

我的代码如下,如果有任何指导,我将不胜感激

 Sub IndexMatch()
'Index/Match store info and get store current period
Dim rw As Long, x As Range
Dim extwbk As Workbook, fNameAndPath As Workbook
Dim sCurrMth As String
Dim rStoreNo As Range
Dim rMth


Set fNameAndPath = ActiveWorkbook
Set extwbk = Workbooks.Open("H:\***\***\Master Store Info.xlsm", ReadOnly:=True)
Set x = extwbk.Worksheets("Info Sheet").Range("A1:z9999")
sCurrMth = "Aug"
Set rStoreNo = extwbk.Worksheets("Info Sheet").Range("A1:A" & Rows.Count)

With fNameAndPath.Worksheets("Sheet1")
    For rw = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
    .Cells(rw, 10) = Application.WorksheetFunction.Index(x, Application.WorksheetFunction.Match(fNameAndPath.Range("A2"), extwbk.Worksheets("Info Sheet").Range("A1:A" & Rows.Count), 0) + _
    Application.WorksheetFunction.Match(sCurrMth, extwbk.Worksheets("Info Sheet").Range("1:1"), 0))
    Next rw
End With
Workbooks("Master Store Info.xlsm").Close
End Sub

【问题讨论】:

  • Range 是工作表的属性,而不是工作簿。
  • 啊,谢谢罗里!它起作用了,现在唯一的事情是它只查找 fNameAndPath.Worksheets("Sheet1").Range("A2") 中的 A2 值。我会认为 Next rw 会让它看起来在 A3 中?
  • @user8449681 除非您将fNameAndPath.Range("A2") 更改为fNameAndPath.Range("A" & rw),否则不会。否则,由于您在代码中明确声明了 A2,它会继续查找。
  • 成功了,非常感谢大家!

标签: excel vba


【解决方案1】:
Sub IndexMatch()
'Index/Match store info and get store current period
Dim rw As Long, x As Range
Dim extwbk As Workbook, fNameAndPath As Workbook
Dim sCurrMth As String
Dim rStoreNo As Range
Dim rMth


Set fNameAndPath = ActiveWorkbook
Set extwbk = Workbooks.Open("H:\***\***\Master Store Info.xlsm", ReadOnly:=True)
Set x = extwbk.Worksheets("Info Sheet").Range("A1:z9999")
sCurrMth = "Aug"
Set rStoreNo = extwbk.Worksheets("Info Sheet").Range("A1:A" & Rows.Count)

With fNameAndPath.Worksheets("Sheet1")
'Start in row2 and look until the end of rows
For rw = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
.Cells(rw, 10) = Application.WorksheetFunction.Index(x, Application.WorksheetFunction.Match(fNameAndPath.Worksheets("Sheet1").Range("A" & row), extwbk.Worksheets("Info Sheet").Range("A1:A" & Rows.Count), 0) + _
Application.WorksheetFunction.Match(sCurrMth, extwbk.Worksheets("Info Sheet").Range("1:1"), 0))
Next rw
End With
Workbooks("Master Store Info.xlsm").Close
End Sub

【讨论】:

    猜你喜欢
    • 2015-02-15
    • 2016-01-03
    • 2016-07-19
    • 2013-08-30
    • 2017-10-22
    • 2020-10-06
    • 1970-01-01
    • 2018-06-08
    • 2020-03-22
    相关资源
    最近更新 更多