2013-03-20 11 views
13

これは私がやりたいことの簡単なデモです。私は、ある範囲の細胞(例えばC1〜C10)に式を設定したい。数式をセルの範囲に設定する

Range("C1").Formula = "=A1+B1" 

が、どのように式は、このようなダイナミックな細胞を使用するには:

Range("C1:C10").Formula = "=Ax+Bx" 

はとても現実には、作業の上にするために、この式のRHSを変更する方法

C1 = A1 + B1 
C2 = A2 + B2 
C3 = A3 + B3 
C4 = A4 + B4 
C5 = A5 + B5 
... 
C10 = A10 + B10 

、同様です:Range("C1:C10").Formula = "=Ax+Bx"

答えて

10

私はC1の式を更新します。そして、よりエレガントな解決策

Range("C1").Formula = "=A1+B1" 
Range("C1").Copy 
Range("C1:C10").Pastespecial(XlPasteall) 
+1

これを行う方法に間違いはありませんが、それは私の答えのコードよりもはるかに遅いという点が異なります。それは多くの細胞を扱うとき効率的ではないコピー&ペースト技術を使用しています。 –

+0

@mehow合意..これは、式が入れ子になって複雑な場合には、理解しやすく、簡単に書くことができます。 –

+1

neilxdimsより単純な解決策を好む – Simon

6

使用FormulaR1C1について...

わからないがC1から数式をコピーし、C10までそれを貼り付けます。

Cells((1,3),(10,3)).FormulaR1C1 = "=RC[-2]+RC[-1]" 

式とは異なり、FormulaR1C1は相対参照を持っています。

+1

あなたの例は受け入れ可能な構文ではありません。あなたは 'Range(Cells(1,3)、Cells(10,3))を意味しましたか?FormulaR1C1 =" = RC [-2] + RC [-1] "'? – dePatinkin

6

私はこれが最も簡単な答えであると考えています.2行で非常に分かりやすいものです。セル範囲内のセルに書かれた数式をドラッグする機能をエミュレートします。

Range("C1").Formula = "=A1+B1" 
Range("C1:C10").FillDown 
+0

そしてそれは速いです(私は5kレコードを試しました) – awesomo

31
Range("C1:C10").Formula = "=A1+B1" 

そのような単純な。

範囲を式で自動入力(塗りつぶし)します。

+1

これは、コードの1行でO.P.の要求を達成するので、これは本当に答えとして受け入れるべきです。 –

+0

それは2年遅れです。私のコメントもそうです。 – jallington

0

使用この

  Sub calc() 


      Range("C1:C10").FormulaR1C1 = "=(R10C1+R10C2)" 


      End Sub 
1

あなたが列を埋めるためにしようとしている場合は、1つのキーボードコマンドを使用してExcel 2010でこれを行うことができます。

  1. 左上の式を設定します。 - ほとんどの細胞
  2. は、全体の範囲を選択し
  3. ヒットはCtrl-D

Ctrl-Dは、選択した行を塗りつぶしたり、選択した配列または列を塗りつぶしたりします。相対参照が適用されます。