2016-10-18 14 views
0

我试图创建一个宏允许我使用折射率匹配另一个工作簿自动填充数据。我已经使用了精确的代码,另一个公式和它的作品,但是当我只需更换式在下面的代码,它给了我一个“应用程序定义或对象定义的错误”IFERROR INDEX/MATCH式具有应用程序定义或对象定义的错误

下面是我的代码。该公式在.formula之后开始。其余的代码存在我自动填充空单元格,它已经与另一个宏一起工作。

Sub FillOrderType() 
Dim LR As Long 
LR = ActiveSheet.UsedRange.Find("*", SearchDirection:=xlPrevious, 
SearchOrder:=xlByRows).Row 
With Range("H2:H" & LR) 
With .SpecialCells(xlCellTypeBlanks) 
.Formula = "=IFERROR(INDEX('C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]EXP'!N:N, MATCH(G:G,'C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]EXP'!L:L,0)), IFERROR(INDEX('C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]AOG'!N:N,MATCH(G:G,'C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]AOG'!L:L,0)),IFERROR(INDEX('C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]SCHED'!M:M,MATCH(G:G,'C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]SCHED'!K:K,0)),"")))" 
End With 
.Value = .Value 
End With 

End Sub 

任何帮助确定问题将不胜感激。我为长公式道歉,我试图用_来包装它,但它不起作用。

编辑:

我认为,问题仅仅在于对公式本身,因为它突出每当我试着调试

=IFERROR(INDEX('C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]EXP'!N:N, MATCH(G:G,'C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]EXP'!L:L,0)), IFERROR(INDEX('C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]AOG'!N:N,MATCH(G:G,'C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]AOG'!L:L,0)),IFERROR(INDEX('C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]SCHED'!M:M,MATCH(G:G,'C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]SCHED'!K:K,0)),""))) 

但我对如何将其转换成VBA代码些许端倪。在公式中,我想要的值位于另一个工作簿中的不同工作表中,并使用IFERROR和INDEX MATCH来获取我想要的值。

+0

请问个人所得税的工作,如果你只做'范围(“H2”)。公式= ...'?在那种情况下,使用fillset函数insetad。当你尝试像你这样做时,我不确定它是否有效。 – Andreas

+0

要填补你做的:'范围(“H2:H”&LR).filldown' – Andreas

+0

嗨,感谢您的快速回复。我尝试过使用'range(“H2”)。formula =',它给了我相同的“应用程序定义或对象定义的错误”,同时突出显示公式。 整个代码本身没有问题,因为我已经用在另一个宏与不同的配方完全相同的代码和它的作品 –

回答

0

喜的解决方法是简单的使用“”“”在最后iferrro而不是“” "=IFERROR(INDEX('C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]EXP'!N:N, MATCH(G:G,'C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]EXP'!L:L,0)), IFERROR(INDEX('C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]AOG'!N:N,MATCH(G:G,'C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]AOG'!L:L,0)),IFERROR(INDEX('C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]SCHED'!M:M,MATCH(G:G,'C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]SCHED'!K:K,0)),"""")))"

+0

哦。我的。神。可以发誓我尝试过。解决方法非常简单,让我感到很蠢。谢谢! –

+0

您是否也知道是否有任何方法来包装公式,以使其适合Visual Basic窗口?我尝试过'_',但只是不能在公式中间使用它。 –

+0

@Andrew我认为你需要用'&_“'来逃避公式,但是很久以前我用这样的代码来包装代码。我通常只是让它保持原样。 – Andreas

相关问题