その上に値がある行の数を認識し、その範囲のみを合計できるマクロを作成しようとしています。添付の画像を見ると、セルB4、B10、B21をクリックしてマクロを実行し、その範囲の値のみを合計できるようにする必要があります。
したがって、セルB4の場合、セルB1からB3を合計する必要があることを知るためのマクロが必要です。
セルB10の場合、4つのセルの範囲(B6からB9)を合計する必要があることを自動的に認識するマクロが必要です。
セルB21の場合、合計する範囲が9行(B12からB20)になったことを自動的に識別するマクロが必要です。
私が使用したマクロは、設定された範囲のセルのみを合計します(たとえば、マクロが実行されるセルのすぐ上の5つのセルのみを合計します(以下のコードスニップを参照)。
Sub Macro22()
'
' Macro22 Macro
' With Relative References turned on.
'
' Keyboard Shortcut: Ctrl+o
'
ActiveCell.FormulaR1C1 = "=SUM(R[-5]C:R[-1]C)"
End Sub
2回目の試行では、マクロがその上のすべてのセルを合計します。
Sub test()
ActiveCell.Value = "=SUM(" & Range(Cells(1, ActiveCell.Column), Cells(ActiveCell.Row - 1, ActiveCell.Column)).Address(False, False) & ")"
End Sub
これも可能ですか?私が見たところ、それは可能であるはずですが、マクロにそれをさせるのは非常に難しいです。
そして、本当にマクロが必要な場合は、これを使用してください(主に ここ から取得、いくつかの改善があります):
Option Explicit
Sub AutoSum()
Const SourceRange = "C:F"
Dim NumRange As Range, formulaCell As Range
Dim SumAddr As String
Dim c As Long
For Each NumRange In Columns(SourceRange).SpecialCells(xlConstants, xlNumbers).Areas
SumAddr = NumRange.Address(False, False)
Set formulaCell = NumRange.Offset(NumRange.Count, 0).Resize(1, 1)
formulaCell.Formula = "=SUM(" & SumAddr & ")"
'change formatting to your liking:
formulaCell.Font.Bold = True
formulaCell.Font.Color = RGB(255, 0, 0)
c = NumRange.Count
Next NumRange
End Sub
これは、列C
からF
の数値で機能し、コードの先頭で必要な他の範囲(定数SourceRange
)に変更します。
数字の領域が互いに接触しないように注意してください。
マクロの代わりに、AutoSumと呼ばれる機能としてすでにExcelの一部であるように思われます。
カーソルを連続する数字のセット(Excelの場合は領域)の下に置き、AutoSumボタンを押すだけです。 Excelがあなたに代わって数式を考え出します。
AutoSumボタンは、リボンの[ホーム]タブの右端にあり、シグマ(∑
)。
これが チュートリアル です。