索引另一个工作簿时Excel VBA索引/匹配function不起作用

我有一个模板使用另一个工作簿的销售数据填充某些单元格,但其他工作簿每个月都有一个新名称。 当我尝试分配一个variables作为工作簿名称,以便它每次都find它时,我无法获得索引/匹配函数的工作。 不知道错误在哪里,但是VBA脚本失败的地方…

Sub GetNetSales() Dim Period As String Dim NS As Workbook Dim Can As Workbook Dim BookName As String Period = Range("Per").Value Set Can = ThisWorkbook ChDir "C:\Users\dlibby\Documents\" & Period Workbooks.Open Filename:= _ "C:\Users\dlibby\Documents\" & Period & "\Net Sales " & Period & ".xlsx" Set NS = ThisWorkbook Can.Activate Range("C10").Select ActiveCell = _ Application.IfError(Application.Index(NS.Sheets("CM Sales").Columns("E:E"), Application.Match(Can.Range("H10").Value, NS.Sheets("CM Sales").Columns("A:A"), 0)), 0).Value Range("C10").Select Selection.Copy Range("C11:C12").Select ActiveSheet.Paste Range("C16:C22").Select ActiveSheet.Paste Application.Calculate Range("C10:C12").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("C16:C22").Select Application.CutCopyMode = False Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub 

当我在macros中使用索引/匹配时,我正在键入这样的公式:

 Folder = Sheets("Overview").Range("F4") filename = Sheets("Overview").Range("G4") filetype = Sheets("Overview").Range("H4") tabname = Sheets("Overview").Range("I4") style = Sheets("Overview").Range("J4") SAPsizecode = Sheets("Overview").Range("K4") ActiveCell.Formula = "=INDEX('" & Folder & "\[" & filename & filetype & "]" & tabname & "'!$" & SAPsizecode & ":$" & SAPsizecode & ",MATCH(C2,'" & Folder & "\[" & filename & filetype & "]" & tabname & "'!$" & style & ":$" & style & ",0))" 

这对我有用。 我认为你的代码中的问题是你如何分配工作簿。 使用上面的方法,您不需要打开另一个工作簿。