导致#REF错误的数组公式

时间:2015-09-11 14:01:39

标签: arrays excel vba formula ref

我不太确定为什么会这样,但我似乎无法在线确定解决方案。我只是试图将一些公式从一张纸复制到另一张(公式将在目标表中.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

当公式转移到目标表时,'单位 - 作业编号'表中的所有参考都将变为#REF!。奇怪的是,即使公式在执行宏之前是正确的,原始公式也会出现#REF!错误。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

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