単一の値を出力する配列数式があり、この同じ配列数式を多数のセルに与えたいと考えています。問題は、配列数式を範囲に割り当てると、それぞれが個別の値を出力するのではなく、配列数式への単一の呼び出しの出力をすべて共有するように数式を解釈することです。
私が何を意味するかを示すために、次のコードを使用しています。
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))}
単一の列ではなく、連結された 2 つの列に対して一致を実行するため、配列数式として配置する必要があります。列の連結は配列として返される必要があるため、数式は配列数式として入力する必要があります。
これまでの最も簡単な解決策は、以下の受け入れられた回答の変形であり、次のとおりです。
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