繁体   English   中英

VBA从范围到结束行插入数组公式?

[英]vba insert array formula from range to end row?

我正在尝试从第10行开始的列下方插入数组公式:

Sub Check()
ActiveSheet.Range("L10").End(xlUp).Row.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)))"
End Sub

由于某种原因,这不起作用,并且我得到一个对象必需的错误。 我还希望每个单元格引用都随行向下。 我是vba的新手,所以如果我的代码不是很好,我深表歉意,但是如果有人可以向我指出正确的方向,我真的会很感激吗?

谢谢

出现错误的原因是""为需要使用""""的公式提供双引号。

然后,您可以通过以下方式将公式输入到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

注意

如注释中所述,对Data上的数据集的所有完整列引用也都需要更改为仅引用数据。

数组公式将迭代并计算整个引用。 因此,每个公式将进行超过800万次计算。 将其乘以输入公式的次数,您将看到这将如何影响计算时间,甚至可能使您的Excel崩溃。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM