web-dev-qa-db-ja.com

vbaを使用してExcelで合計式を設定する

合計値を計算するために上記のセルからセル値を追加しようとしているExcelマクロで作業しています。これは私のデータがどのように見えるかですSample Excel Document

ここでは、各列の上記のセル値を追加して、合計を計算します。これを達成するために、私は次のようにマクロを作成しました。

For cl = 2 To 5    
    Worksheets(5).Cells(4, cl).Formula = "=SUM(B4:B6)"        
Next cl

これにより、5列までの行の各セルに数式が設定されます。ただし、行のすべてのセルに同じ数式を設定し、列に応じて変更する必要があります。対応する列の各セルの合計数式を設定するにはどうすればよいですか?

4
sudhakarssd

私はあなたのコードを完全に理解しているかどうかわかりません。行4に書き込んでいるようですが、行4から行6まで合計したいとします。これにより循環参照が作成されます。

代わりに、数式が行3に書き込まれると仮定します。 R1C1参照スタイルを使用して、現在のセルと比較してセルを合計するようにします。

使用する参照を学ぶための秘訣は次のとおりです。

  • 新しいワークシートを取得し、セルB3に=SUM(B4:B6)と入力して、右側にコピーします。
  • 次に、ファイル>オプション>数式をクリックし、R1C1参照スタイルを選択します。
  • 次に、シートの数式を調べます。これが表示されます:=SUM(R[1]C:R[3]C)

これは、マクロで必要なものです。

For cl = 2 To 5    
    Worksheets(5).Cells(3, cl).FormulaR1C1 = "=SUM(R[1]C:R[3]C)"    
Next cl
9
teylyn

あなたの場合、あなたはこれを使うことができます:

For cl = 2 To 5
    ColName = Left(Cells(1, cl).Address(0, 0), (Cells(1, cl).Column < 27) + 2)
    ValueSum = "=SUM(" & ColName & "4:" & ColName & "6)"
    Worksheets(5).Cells(4, cl).Formula = ValueSum
Next
1
Serafin William

数式のR1C1およびR [1] C [1]スタイルの詳細。私の知る限り、R [1] C [1]は相対参照を作成し、R1C1は絶対参照を作成します。ただし、R [x]とC [y]の数値は、数式を含むセルへのオフセットであることに注意してください。

つまり、C5でA1:B4の合計を表示する場合、コードは次のようにする必要があります。

Worksheets(5).Cells(5, 3).FormulaR1C1 = "=SUM(R[-4]C[-2]:R[-1]C[-1])"   

同じことをしたいが、絶対参照で終わる場合は、このようになります。

 Worksheets(5).Cells(5, 3).FormulaR1C1 = "=SUM(R1C1:R4C2)" 
0
Stefan

数式の範囲全体を参照するだけで、Excelは列を調整するのに十分スマートになると思います。

ループなし:

Worksheets(5).Cells(4、cl).resize(1,4).Formula = "= SUM(B4:B6)"

0
wallyeye

以下のような非常に単純な式を使用できます。

Sub sum_month()
Sheets("13").Activate
Range("D2").Formula = "=SUM(A1+A2+A3)"
End Sub

次に、セルを押したままドラッグして、別の行を自動的に埋めます。

0
Mariusz Krukar

このようなものを試してください。

For cl = 2 To 5
    ColName = Left(Cells(1, cl).Address(False, False), 1 - (cl > 26))
    Worksheets(5).Cells(4, cl).Formula = "=SUM(" & ColName & "4:" & ColName & "6)"
Next cl
0
user1685490