2017-01-17 51 views
0

我有下面的代码,应该将一个索引匹配公式拖到列AX中的列(从第7行起)。vba插入索引匹配公式下降列不工作

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中的值是什么?如果= <7,则自动填充将失败。 –

+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