これは、私がやりたいことの簡単なデモです。セルの範囲(C1〜C10など)に数式を設定したい。
_Range("C1").Formula = "=A1+B1"
_
しかし、数式で次のような動的セルを使用する方法:
_Range("C1:C10").Formula = "=Ax+Bx"
_
現実にはそうです
_C1 = A1 + B1
C2 = A2 + B2
C3 = A3 + B3
C4 = A4 + B4
C5 = A5 + B5
...
C10 = A10 + B10
_
上記の式が機能するようにこの式のRHSを変更する方法:Range("C1:C10").Formula = "=Ax+Bx"
C1の式を更新します。次に、C1から数式をコピーし、C10まで貼り付けます...
よりエレガントなソリューションがわからない
Range("C1").Formula = "=A1+B1"
Range("C1").Copy
Range("C1:C10").Pastespecial(XlPasteall)
Range("C1:C10").Formula = "=A1+B1"
そのような単純な。
範囲を数式で自動入力(FillDown)します。
これは可能な限り簡単な答えだと思います:2行で非常にわかりやすい。セルに記述された数式をセル範囲全体にドラッグする機能をエミュレートします。
Range("C1").Formula = "=A1+B1"
Range("C1:C10").FillDown
FormulaR1C1を使用します。
Cells((1,3),(10,3)).FormulaR1C1 = "=RC[-2]+RC[-1]"
Formulaとは異なり、FormulaR1C1には相対参照があります。
これを使って
Sub calc()
Range("C1:C10").FormulaR1C1 = "=(R10C1+R10C2)"
End Sub
列を埋めようとしている場合、Excel 2010で1つのキーボードコマンドを使用してこれを実行できます。
Ctrl-Dは、選択された行を塗りつぶすか、選択された配列または列を塗りつぶします。相対参照が適用されます。