【发布时间】:2011-08-28 05:33:15
【问题描述】:
我有一个输出单个值的数组公式,我想为一大堆单元格提供相同的数组公式。问题是当我将数组公式分配给范围时,它会以这样一种方式解释公式,即它们都共享对数组公式的单个调用的输出,而不是每个输出单独的值。
为了说明我的意思,我使用了以下代码:
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),MATCH(A$1,BatchTTIDData!$1:$1,0))}
它必须作为数组公式放入,因为它不是在单个列上执行匹配,而是在两个连接的列上执行匹配。列的连接必须作为数组返回,因此公式必须作为数组公式输入。
到目前为止,最简单的解决方案是以下公认答案的变体:
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' 依赖于它所在的单元格,但我们需要该字符串来向您展示如何实现这一点(如果可能的话)。
-
正如你在上面看到的,pullFormula 已经依赖于它所在的单元格。它考虑了当前行和列标题 (
A$1),每个列都不同。 -
好问题。根据this article,你有最好的方法
标签: excel vba array-formulas