【问题标题】:IFERROR INDEX/MATCH formula having application-defined or object-defined errorIFERROR INDEX/MATCH 公式具有应用程序定义或对象定义的错误
【发布时间】:2016-10-18 03:48:04
【问题描述】:

我正在尝试创建一个宏,允许我使用 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 来获取我想要的值。

【问题讨论】:

  • 如果你只做range("H2").formula = ...,它是否有效?在这种情况下,这样做并使用填充功能 insetad。当您尝试像这里那样做时,我不确定它是否有效。
  • 填写如下:range("H2:H" & LR).filldown
  • 您好,感谢您的快速回复。我尝试过range("H2").formula =,它在突出显示公式的同时给了我相同的“应用程序定义或对象定义错误”。整个代码本身没有问题,因为我在另一个宏上使用了完全相同的代码和不同的公式,它可以工作
  • 你能在单元格中手动插入相同的公式吗?
  • 是的,我可以。这就是为什么我认为问题出在公式上。

标签: excel vba formula autofill


【解决方案1】:

您好,解决方法很简单,在最后一个 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)),"""")))"

【讨论】:

  • 哦。我的。上帝。我可以发誓我试过了。解决方案非常简单,让我觉得自己很愚蠢。谢谢!
  • 您是否还知道是否有任何方法可以包装公式以使其适合 Visual Basic 窗口?我试过_,但就是不能在公式中间使用它
  • @Andrew 我认为您需要使用" &_" 转义公式,但这是很久以前的事了,因为我这样包装了代码。我通常会保持原样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-10
  • 1970-01-01
  • 1970-01-01
  • 2016-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多