Vba経由でexcelでsumを使用するにはどうすればよいですか?
Excel では、VBA を使用して、セル範囲または複数の範囲から値の合計を計算できます。そして、このチュートリアルでは、それを使用するさまざまな方法を学びます。
WorksheetFunction を使用した VBA での合計
VBA では使用できる関数がいくつかありますが、この目的に特化した関数はありません。これは、合計を出せないという意味ではありません。 VBA には、VBA コードで関数を呼び出すのに役立つWorksheetFunctionと呼ばれるプロパティがあります。
A1:A10の範囲内の値の合計を考えてください。
- まずワークシート関数のプロパティを入力し、次にリストから SUM 関数を選択します。
- 次に、スプレッドシートに関数を入力するときと同じように、開始括弧を入力する必要があります。
- その後、範囲オブジェクトを使用して、合計を計算する範囲を参照する必要があります。
- 最後に、右かっこを入力し、関数の戻り値をセル B1 に割り当てます。
Range ("B1") = Application.WorksheetFunction.Sum(Range("A1:A10"))
このコードを実行すると、A1:A10 の範囲内の値の合計が計算され、セル B1 に値が入力されます。
列または行全体の値の合計
この場合、前の例で使用した範囲の代わりに行または列を指定するだけです。
' for the entire column A Range ("B1") = Application.WorksheetFunction.Sum( Range ("A:A")) ' for entire row 1 Range ("B1") = Application.WorksheetFunction.Sum( Range ("1:1"))
VBA を使用して選択値を追加する
次に、このようなコードを使用できるため、選択したセルの値のみを合計したいとします。
Sub vba_sum_selection() Dim sRange As Range Dim iSum As Long On Error GoTo errorHandler Set sRange = Selection iSum = WorksheetFunction.Sum(Range(sRange.Address)) MsgBox iSum errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
上記のコードでは、選択を使用して変数「sRange」に指定し、この範囲変数のアドレスを使用して合計を取得しました。
上記のすべてのセルの VBA 合計
次のコードは、すべてのセルと合計値を抽出し、結果を選択したセルに入力します。
Sub vba_auto_sum() Dim iFirst As String Dim iLast As String Dim iRange As Range On Error GoTo errorHandler iFirst = Selection. End (xlUp). End (xlUp).Address iLast = Selection. End (xlUp).Address Set iRange = Range(iFirst & ":" & iLast) ActiveCell = WorksheetFunction.Sum(iRange) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
VBAを使用してダイナミックレンジを追加する
同様に、VBA を使用して値を追加するときにダイナミック レンジを使用できます。
Sub vba_dynamic_range_sum() Dim iFirst As String Dim iLast As String Dim iRange As Range On Error GoTo errorHandler iFirst = Selection.Offset(1, 1).Address iLast = Selection.Offset(5, 5).Address Set iRange = Range(iFirst & ":" & iLast) ActiveCell = WorksheetFunction.Sum(iRange) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
動的な列または行を追加する
同様に、動的列を使用したい場合は、アクティブ セルの列を取得し、そこにあるすべての値を合計する次のコードを使用できます。
Sub vba_dynamic_column() Dim iCol As Long On Error GoTo errorHandler iCol = ActiveCell.Column MsgBox WorksheetFunction.Sum(Columns(iCol)) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
そして連続で。
Sub vba_dynamic_row() Dim iRow As Long On Error GoTo errorHandler iRow = ActiveCell.Row MsgBox WorksheetFunction.Sum(Rows(iCol)) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
VBA で SUMIF を使用する
sum と同様に、SUMIF 関数を使用して、次の例のように条件を指定して値を加算できます。
Sub vba_sumif() Dim cRange As Range Dim sRange As Range Set cRange = Range ("A2:A13") Set sRange = Range ("B2:B13") Range ("C2") = _ WorksheetFunction.SumIf(cRange, "Product B", sRange) End Sub