我有一个输出单个值的数组公式,并且我想给出一大堆单元格这个相同的数组公式。问题是,当我将数组公式分配给范围时,它以这样的方式解释公式,它们都将单个调用的输出共享给数组公式,而不是每个公式都输出一个单独的值。使用VBA将ArrayFormula设置为多个Excel单元格
要告诉你我的意思是,我使用下面的代码:
With MarginalData
.Range(.Cells(2, 1), .Cells(13, .UsedRange.Columns.Count)).FormulaArray = pullFormula
End With
我想,是一个结果,看起来像这样:
这是它看起来像当我在范围内的每个单元格中分别输入数组公式时。
但我所得到的是这样的:
数组公式中的第一个单元的输出重复中的所有列 - 他们都有着相同的输出。
如何以编程方式分配数组公式,就好像每个单元格都分开分配了一样?
的公式为:
{= INDEX(BatchResults,MATCH(TTID & CHAR(1)& ROW() - 1,BatchResultsTTIDS & CHAR(1)& BatchResultsLayers,0), (!A $ 1,$ BatchTTIDData 1:$ 1,0)MATCH)}
它必须被置于作为数组公式,因为它在单个列进行匹配,而是在两个级联的列。串联的列必须以数组的形式返回,因此公式必须作为数组公式输入。
到目前为止,最简单的解决方案,下面的接受的答案的变体,如下:
Const pullFormula = "=INDEX(BatchResults,MATCH(TTID&CHAR(1)&ROW()-1,BatchResultsTTIDS&CHAR(1)&BatchResultsLayers,0),MATCH(A$1,BatchTTIDData!$1:$1,0))"
With wrksht
With .Range(.Cells(2, 1), .Cells(13, .UsedRange.Columns.Count))
.Formula = pullFormula
.FormulaArray = .FormulaR1C1
End With
End With
您需要能够使'pullFormula'依赖于它所在的单元格,但我们需要使用该字符串来向您展示如何实现这一点(如果可能的话)。 – 2011-05-18 16:58:29
正如你在上面看到的,pullFormula已经依赖于它所在的单元格了。它考虑到了当前行和列标题('A $ 1'),每列都不相同。 – Alain 2011-05-18 17:23:37
好问题。并根据[本文](http://colinlegg.wordpress。com/2012/05/23/working-with-range-formulaarray-in-vba /)你有最好的办法 – brettdj 2014-07-12 13:47:27