Excel VBA .FormulaArray错误

该错误是1004错误,但我不明白为什么。 单元格中的公式是:

{= INDEX(KPI!A:AQ,MATCH(1,(KPI!A:A =星期一$ķ$ 1)*(KPI C:!!! C =星期一B4),0),37)+ INDEX(KPI!答:AQ,MATCH(1,(KPI答:A =周一$ķ$ 1)*(KPI C:!!!C =周一B4),0),38) – 索引(KPI答:AQ,MATCH( 1,(KPI答:A =周一$ķ$ 1!)*(KPI C:!C =周一B4),0),39)}

为了把这个公式变成一个macros,我简单地使用了录制工具,但是它不起作用。

Selection.FormulaArray = _ "=INDEX(KPI!C[-3]:C[39],MATCH(1,(KPI!C[-3]=Monday!R1C11)*(KPI!C[-1]=Monday!RC[-2]),0),37)+INDEX(KPI!C[-3]:C[39],MATCH(1,(KPI!C[-3]=Monday!R1C11)*(KPI!C[-1]=Monday!RC[-2]),0),38)-INDEX(KPI!C[-3]:C[39],MATCH(1,(KPI!C[-3]=Monday!R1C11)*(KPI!C[-1]=Monday!RC[-2]),0),39)" 

只要你坚持做事难,

 Option Explicit Sub wqer() With ThisWorkbook .Worksheets("KPI").Name = "K" .Worksheets("Monday").Name = "M" 'geez - decide what cell you want without Selection¹ !!??!! Selection.FormulaArray = _ "=INDEX(K!C[-3]:C[39],MATCH(1,(K!C[-3]=M!R1C11)*(K!C[-1]=M!RC[-2]),0),37)+INDEX(K!C[-3]:C[39],MATCH(1,(K!C[-3]=M!R1C11)*(K!C[-1]=M!RC[-2]),0),38)-INDEX(K!C[-3]:C[39],MATCH(1,(K!C[-3]=M!R1C11)*(K!C[-1]=M!RC[-2]),0),39)" .Worksheets("K").Name = "KPI" .Worksheets("M").Name = "Monday" End With End Sub 

重命名您的工作表来回将您的公式放在Axel Richter指出的内置字符限制²的数据公式插入单元格的时间。 这会在您的工作簿上提出过高的计算需求,但这对您来说可能是一个可接受的解决scheme。 考虑在操作期间将应用程序的计算模式更改为手动。


¹ 请参阅如何避免使用在Excel VBAmacros中select更多的方法来摆脱依靠select和激活来实现您的目标。

² 请参阅Range.FormulaArray属性 。

你也可以试试这个(
请不要从VBE运行它,尝试从表单环境中运行它。 去开发macros – 您的macros – 运行或从一个button或快捷方式运行,它将工作没有问题):

 Selection.Formula = _ "=INDEX(KPI!C[-3]:C[39],MATCH(1,(KPI!C[-3]=Monday!R1C11)*(KPI!C[-1]=Monday!RC[-2]),0),37)+INDEX(KPI!C[-3]:C[39],MATCH(1,(KPI!C[-3]=Monday!R1C11)*(KPI!C[-1]=Monday!RC[-2]),0),38)-INDEX(KPI!C[-3]:C[39],MATCH(1,(KPI!C[-3]=Monday!R1C11)*(KPI!C[-1]=Monday!RC[-2]),0),39)" SendKeys "{F2}" SendKeys "^+{ENTER}"