我有一個輸出單個值的數組公式,並且我想給出一大堆單元格這個相同的數組公式。問題是,當我將數組公式分配給範圍時,它以這樣的方式解釋公式,它們都將單個調用的輸出共享給數組公式,而不是每個公式都輸出一個單獨的值。使用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