2015-08-05 1 views
1

У меня есть шаблон, который заполняет определенные ячейки данными продаж из другой книги, но другая книга имеет новое имя для каждого месяца. Когда я пытаюсь назначить переменную как имя книги, чтобы она находилась каждый раз, я не могу заставить функцию index/match работать. Не знаете, где ошибка, но это точка, где сценарий VBA не удается ...Excel VBA Index/Match функция не работает при индексировании другой книги

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 
+0

Часть Application.IfError не помогает вам получить правильное значение там, но это может быть не единственная проблема. – puzzlepiece87

ответ

0

Когда я использую Index/Match в Macro я набираю формулу как это:

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))" 

И это работает на меня. Я думаю, что проблема в вашем коде заключается в том, как вы назначаете книги. При таком подходе вам не нужно открывать другую книгу.

Смежные вопросы