【问题标题】:Array Formula Resulting in #REF Error导致 #REF 错误的数组公式
【发布时间】:2015-12-08 03:00:37
【问题描述】:

我不太确定为什么会发生这种情况,但我似乎无法在线确定解决方案。我只是试图将一些公式从一张表复制到另一张表(公式将在目标表中.FillDown),但我特别遇到了一个公式的问题。我相信这是因为公式是一个数组,但即使我使用.Range.FormulaArray,我也会收到相同的#REF! 错误。这是公式和传输它的脚本:

(注意:公式中的引用对于目标工作表是准确的,而不是原始工作表 - 公式保留在指定工作表中,因为在关闭工作簿以减小文件大小时,目标工作表上的所有数据都会被删除)

预期公式

IF(LEFT(H2,1)="2","Platforms",INDEX('Units - Job Numbers'!$A$2:$A$200,SMALL(IF('Units - Job Numbers'!$B$2:$CO$200=I2,ROW('Units - Job Numbers'!$B$2:$CO$200)-ROW('Units - Job Numbers'!$B$2)+1),1)))

转移后公式

=IF(LEFT(H2,1)="2","Platforms",INDEX('Units - Job Numbers'!#REF!,SMALL(IF('Units - Job Numbers'!#REF!=I2,ROW('Units - Job Numbers'!#REF!)-ROW('Units - Job Numbers'!#REF!)+1),1)))

VBA

'Copy and Extend Raw WIP Data Formulas
With ThisWorkbook.Worksheets("Raw WIP Data")
.Range("AE2:AL2").Formula = ThisWorkbook.Worksheets("Formulas").Range("A7:H7").Formula
.Range("AM2").Formula = ThisWorkbook.Worksheets("Formulas").Range("I7").Formula
.Range("AE2:AM" & WIPLastRow).FillDown
.Range("AE2:AM" & WIPLastRow).Copy
.Range("AE2:AM" & WIPLastRow).PasteSpecial xlPasteValues
Application.CutCopyMode = False

ActiveSheet.Cells(1, 1).Select

End With

当公式转移到目标工作表时,'Units - Job Numbers' 工作表中的所有引用都变为#REF!。奇怪的是,即使公式在执行宏之前是正确的,原始公式也有 #REF! 错误。有什么建议吗?

【问题讨论】:

  • 你能在这里发布你的代码吗?你在单元格中得到的公式是什么?
  • 我不会包含我的整个脚本,因为它很长,除了这一行之外我没有任何问题。从原始表转移后,我将包含公式。
  • 你有一张名为Units - Job Numbers的工作表吗?

标签: arrays excel vba formula ref


【解决方案1】:

这是我对正在发生的事情的最佳猜测...您是否可能在到达复制公式的这行代码之前或之后删除'Units - Job Numbers' 表中的单元格?如果是这样,它可能会使引用无效。检查您的代码是否删除了'Units - Job Numbers' 中的单元格。如果要删除单元格,请立即在代码中设置断点并检查原始公式,然后您会看到引用转到#REF(在您的FormulasRaw WIP Data 表中,如果它在复制)。

【讨论】:

  • 感谢您的回答,我在编辑帖子并尝试更正后立即意识到这一点。我仍然对所有被索引的值有一些问题,但至少现在我没有遇到#REF! 错误。
猜你喜欢
  • 2018-11-03
  • 1970-01-01
  • 1970-01-01
  • 2018-11-04
  • 2014-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-02
相关资源
最近更新 更多