2017-01-17 4 views
0

У меня есть следующий код, который должен перетащить формулу соответствия индекса вниз по моему столбцу в столбце AX (начиная с строки 7 и далее).vba insert index match formula down column не работает

Sub Estimated() 
Dim lastRow As Long 

Application.DisplayAlerts = False 
Application.EnableEvents = False 
Application.ScreenUpdating = False 


If IsFileOpen("\\gb-ss04\001_DATA\WH DISPO\(5) WH SHARED DRIVE\(21) WAREHOUSE RECEIVINGS\Order Checker.xlsm") Then 

Else 

Workbooks.Open "\\gb-ss04\001_DATA\WH DISPO\(5) WH SHARED DRIVE\(21) WAREHOUSE RECEIVINGS\Order Checker.xlsm" 

End If 

lastRow = ThisWorkbook.Sheets(1).Range("AX" & Rows.Count).End(xlUp).Row 

ThisWorkbook.Sheets(1).Range("AX7").FormulaArray = "=IFERROR(INDEX(Data!$B:$B,MATCH(1,(Home!$H10=Data!$C:$C)*(Home!$I10=Data!$D:$D)*(IF(Home!$J10<55,Home!$J10,WEEKNUM(Home!$J10,21))=Data!$F:$F),0)),""No Po Found"")" 
ThisWorkbook.Sheets(1).Range("AX7").AutoFill ActiveSheet.Range("AX7:AX" & lastRow) 

Application.DisplayAlerts = True 
Application.EnableEvents = True 
Application.ScreenUpdating = True 

End Sub 

Я получаю ошибку на этой линии:

ThisWorkbook.Sheets(1).Range("AX7").AutoFill ActiveSheet.Range("AX7:AX" & lastRow) 

Автозаполнение метод диапазона не удалось.

Возможно, кто-нибудь покажет мне правильный способ сделать это? Я также не уверен, что мне нужно открыть другую книгу или нет, может кто-то прояснить?

Единственная причина, я открываю другую книгу для ссылки целей в моей формуле индекс соответствия - так оно не запутаться, где рабочая книга и т.д.

+0

Какова ценность в LastRow? If = <7, то AutoFill завершится с ошибкой. –

+0

@MarkFitzgerald пусто – user7415328

ответ

0

Вы должны проверить lastRow на колонке, которую вы пытаетесь заполнить , а скорее на колонке, которая уже заполнена (здесь установлено A):

Sub Estimated() 
Dim lastRow As Long 

Application.DisplayAlerts = False 
Application.EnableEvents = False 
Application.ScreenUpdating = False 


If IsFileOpen("\\gb-ss04\001_DATA\WH DISPO\(5) WH SHARED DRIVE\(21) WAREHOUSE RECEIVINGS\Order Checker.xlsm") Then 
Else 
    Workbooks.Open "\\gb-ss04\001_DATA\WH DISPO\(5) WH SHARED DRIVE\(21) WAREHOUSE RECEIVINGS\Order Checker.xlsm" 
End If 

lastRow = ThisWorkbook.Sheets(1).Range("A" & Rows.Count).End(xlUp).Row 

ThisWorkbook.Sheets(1).Range("AX7").FormulaArray = "=IFERROR(INDEX(Data!$B:$B,MATCH(1,(Home!$H10=Data!$C:$C)*(Home!$I10=Data!$D:$D)*(IF(Home!$J10<55,Home!$J10,WEEKNUM(Home!$J10,21))=Data!$F:$F),0)),""No Po Found"")" 
ThisWorkbook.Sheets(1).Range("AX7").AutoFill ActiveSheet.Range("AX7:AX" & lastRow) 

Application.DisplayAlerts = True 
Application.EnableEvents = True 
Application.ScreenUpdating = True 

End Sub