【发布时间】: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,它会继续查找。 -
成功了,非常感谢大家!