2016-05-19 15 views
0

データセットに含まれるデータポイントの数に基づいて配列に式を挿入するコードを取得しようとしています。以下のコードはほとんど動作しますが、Xの最初の反復が完了した後では、列のすべての行に数式が挿入されません。変数とオフセット関数に基づいて配列に式を挿入する

Worksheets(" Branded").Range("C3").Formula = "=COUNTIFS(" & r.Address(ReferenceStyle:=xlR1C1) & ",RC2, " & r2.Address(ReferenceStyle:=xlR1C1) & ",R2C)" 

For Y = 1 To Column_Limit1 - 1 
    Range("C3").Offset(0, Y).Formula = "=COUNTIFS(" & r.Address(ReferenceStyle:=xlR1C1) & ",RC2, " & r2.Address(ReferenceStyle:=xlR1C1) & ",R2C)" 
    For X = 1 To Row_Limit1 - 1 
     Range("C3").Offset(X, 0).Formula = "=COUNTIFS(" & r.Address(ReferenceStyle:=xlR1C1) & ",RC2, " & r2.Address(ReferenceStyle:=xlR1C1) & ",R2C)" 
    Next X 
Next Y 
+1

R1C1スタイルを使用すると、通常、ループが不要になります。あなたが 'A2 =' A1 + 1'と 'A3'' = A1 + 1'の中で' R1C1の式 '= R [-1] C + 1'を使うと仮定しても、その式は変わらず、 '[A2:A10] .FormulaR1C1 =" = R [-1] C + 1 "'を直接入力することができます。変更しない数式を見て、入力範囲全体を直接使用することができます。 (それはまたずっと速いです –

+1

ループのたびに最初の行と最初の列だけを上書きしていますおそらく 'Range(" C3 ")オフセット(X、0).Formula = "C3")。オフセット(X、Y).Formula = '。 – RBarryYoung

答えて

3

これに変更します。

With Worksheets(" Branded") 
    .Range(.Cells(3, 3), .Cells(Row_Limit1 + 2, Column_Limit1 + 2)).FormulaR1C1 = "=COUNTIFS(" & r.Address(ReferenceStyle:=xlR1C1) & ",RC2, " & r2.Address(ReferenceStyle:=xlR1C1) & ",R2C)" 
    .Range(.Cells(Row_Limit1 + 3, 3), .Cells(Row_Limit1 + 3, Column_Limit1 + 2)).FormulaR1C1 = "=SUM(R3C:R[-1]C)" 
End With 

R1C1を使用する場合は、ループの必要はありません。

+1

私はちょうど試みたが、コードは私に文法エラーを与える。それを引き起こしているかもしれない何の考え? – TonyP

+0

私は' End With' Edit @TonyP –

+0

構文エラーを修正しました。しかし、それは完全な配列を記入しません。配列は5列14行にする必要があります。これにより、2列11行が塗りつぶされます。 – TonyP

関連する問題