![](/img/trans.png)
[英]Excel VBA - Take First Row from one Range and give it to the end of another Range. Array?
[英]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.