2012-03-21 43 views
6

数値を含む範囲を選択した後、VBAを使用して、各列の最後、つまり最後に選択した行の次の行に=SUMの式を入力します。各列について、選択全体の対応する列のすべての値を合計する必要があります。VBAを使用して選択範囲の列を合計する方法は?

どうすればいいですか?

今、私はマクロレコーダーによって与えられたコードを使用しています:ActiveCell.FormulaR1C1 = "=SUM(R[-10]C:R[-1]C)"。問題は、私の範囲が10行より大きくなったときに、ボトム10の上にある行を考慮しない場合です。

enter image description here

答えて

6

これは動作します:

Sub MakeSums() 
    Dim source As Range 
    Dim iCol As Long 
    Dim nCol As Long 
    Dim nRow As Long 

    Set source = Selection 

    nCol = source.Columns.Count 
    nRow = source.Rows.Count 
    For iCol = 1 To nCol 
     With source.Columns(iCol).Rows(nRow).Offset(1, 0) 
      .FormulaR1C1 = "=SUM(R[-" & nRow & "]C:R[-1]C)" 
      .Font.Bold = True 
     End With 
    Next iCol 

End Sub 

例:

enter image description here

1

あなたはまた、VBAせずにこのような何かを行うことができます:

=SUM(OFFSET(INDIRECT(CELL("address")),1-ROW(),0,ROW()-1,1)) 

これは、数式が存在するセルの上のすべてのセルを合計します。

8

単純な非VBAアプローチです。

合計を計算するセルを選択し、を押します。Alt - =

SNAPSHOT

enter image description here

そしてここでは、同じことを1行VBAコードです。

Sub AutoSum() 
    '~~> After you select your range 
    Application.CommandBars.ExecuteMso ("AutoSum") 
End Sub 
関連する問題