Vba経由でexcelでsumを使用するにはどうすればよいですか?

Excel では、VBA を使用して、セル範囲または複数の範囲から値の合計を計算できます。そして、このチュートリアルでは、それを使用するさまざまな方法を学びます。

WorksheetFunction を使用した VBA での合計

VBA では使用できる関数がいくつかありますが、この目的に特化した関数はありません。これは、合計を出せないという意味ではありません。 VBA には、VBA コードで関数を呼び出すのに役立つWorksheetFunctionと呼ばれるプロパティがあります。

VBA を使用したスプレッドシートの合計

A1:A10の範囲内の値の合計を考えてください。

  1. まずワークシート関数のプロパティを入力し、次にリストから SUM 関数を選択します。
    enter-worksheet-function
  2. 次に、スプレッドシートに関数を入力するときと同じように、開始括弧を入力する必要があります。
    starting-parenthesis
  3. その後、範囲オブジェクトを使用して、合計を計算する範囲を参照する必要があります。
    use-the-range-object
  4. 最後に、右かっこを入力し、関数の戻り値をセル B1 に割り当てます。
    closing-parenthesis
 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 関数を使用して、次の例のように条件を指定して値を加算できます。

sumif-with-vba
 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

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です