我正在尝试从第10行开始向下插入数组公式:
Request request = mock(Request.class);
when(event.request()).thenReturn(request);
when(request.getParam("type")).thenReturn("application/octet-stream");
由于某种原因,这不起作用,我得到一个对象所需的错误。 我也希望每一个细胞参考下降每一行。我是vba的新手,如果我的代码不是很好,那么道歉,但如果有人可以请我指出正确的方向,我真的很感激吗?
由于
答案 0 :(得分:0)
您收到错误的原因是""
为您需要使用""""
的公式提供双引号。
然后你会以这种方式将公式输入L10:
ActiveSheet.Range("L10").FormulaArray = "=IF(J10<>"""",INDEX(Data!B:B,MATCH(1,(Home!H10=Data!C:C)*(Home!I10=Data!D:D)*(Home!J10=Data!E:E),0)),INDEX(Data!B:B,MATCH(1,(Home!H10=Data!C:C)*(Home!I10=Data!D:D)*(K10=Data!F:F),0)))"
然后填充下面的行使用Range.AutoFill
ActiveSheet.Range("L10").AutoFill .Range("L10:l100")
其中L10:L100是公式的放置范围。
所以:
Sub Check()
Dim lastrow As Long
Dim sht As Worksheet
Set sht = ActiveSheet
With sht
lastrow = .Cells(.Rows.Count, 10).End(xlUp).Row
.Range("L10").FormulaArray = "=IF(J10<>"""",INDEX(Data!B:B,MATCH(1,(Home!H10=Data!C:C)*(Home!I10=Data!D:D)*(Home!J10=Data!E:E),0)),INDEX(Data!B:B,MATCH(1,(Home!H10=Data!C:C)*(Home!I10=Data!D:D)*(K10=Data!F:F),0)))"
.Range("L10").AutoFill ActiveSheet.Range("L10:L" & lastrow)
End With
End Sub
注意强>
如评论中所述,所有对数据数据集的完整列引用也需要更改为仅引用数据。
数组公式将迭代并计算整个引用。因此每个公式将进行超过800万次计算。将该公式输入的次数乘以,您可以看到这将如何影响计算时间,甚至可能导致您的Excel崩溃。