合計値を計算するために上記のセルからセル値を追加しようとしているExcelマクロで作業しています。これは私のデータがどのように見えるかです
ここでは、各列の上記のセル値を追加して、合計を計算します。これを達成するために、私は次のようにマクロを作成しました。
For cl = 2 To 5
Worksheets(5).Cells(4, cl).Formula = "=SUM(B4:B6)"
Next cl
これにより、5列までの行の各セルに数式が設定されます。ただし、行のすべてのセルに同じ数式を設定し、列に応じて変更する必要があります。対応する列の各セルの合計数式を設定するにはどうすればよいですか?
私はあなたのコードを完全に理解しているかどうかわかりません。行4に書き込んでいるようですが、行4から行6まで合計したいとします。これにより循環参照が作成されます。
代わりに、数式が行3に書き込まれると仮定します。 R1C1参照スタイルを使用して、現在のセルと比較してセルを合計するようにします。
使用する参照を学ぶための秘訣は次のとおりです。
=SUM(B4:B6)
と入力して、右側にコピーします。=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
あなたの場合、あなたはこれを使うことができます:
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
数式の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)"
数式の範囲全体を参照するだけで、Excelは列を調整するのに十分スマートになると思います。
ループなし:
Worksheets(5).Cells(4、cl).resize(1,4).Formula = "= SUM(B4:B6)"
以下のような非常に単純な式を使用できます。
Sub sum_month()
Sheets("13").Activate
Range("D2").Formula = "=SUM(A1+A2+A3)"
End Sub
次に、セルを押したままドラッグして、別の行を自動的に埋めます。
このようなものを試してください。
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