Vbaを介してexcelで値を平均するにはどうすればよいですか?

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

WorksheetFunction を使用した VBA の平均

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

スプレッドシート関数を使用したVBAの平均

A1:A10の範囲の値を平均してみましょう。

  1. まずワークシート関数のプロパティを入力し、次にリストから AVERAGE 関数を選択します。
    worksheet-function-average
  2. 次に、スプレッドシートに関数を入力するときと同じように、開始括弧を入力する必要があります。
    enter-starting-paranthesis
  3. その後、範囲オブジェクトを使用して、平均を計算したい範囲を参照する必要があります。
    use-the-range-object
  4. 最後に、右かっこを入力し、関数の戻り値をセル B1 に割り当てます。
    type-close-pranthesis
 Application.WorksheetFunction.Average( Range ("A1:A10"))

このコードを実行すると、A1:A10 の範囲内の値の平均が計算され、その値がセル B1 に入力されます。

実行コード-平均値の計算

列または行全体の平均値

この場合、前の例で使用した範囲の代わりに行または列を指定するだけです。

 'for the entire column A Range ("B1") = Application.WorksheetFunction.Average( Range ("A:A")) 'for entire row 1 Range ("B1") = Application.WorksheetFunction.Average( Range ("1:1"))

VBA を使用して選択値を平均化する

次のようなコードを使用できるため、選択したセルの平均値のみを計算したいとします。

 Sub vba_average_selection() Dim sRange As Range Dim iAverage As Long On Error GoTo errorHandler Set sRange = Selection iAverage = WorksheetFunction.Average(Range(sRange.Address)) MsgBox iAverage Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub

上記のコードでは、選択範囲を使用し、それを変数「sRange」に指定し、この範囲変数のアドレスを使用して平均を取得しました。

VBA は上記のすべてのセルを平均します

次のコードは、上記のすべてのセルとその平均値を取得し、その結果を選択したセルに入力します

 Sub vba_auto_Average() 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.Average(iRange) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub

VBA を使用したダイナミック レンジの平均化

同様に、VBA を使用して値を平均するときにダイナミック レンジを使用することもできます。

 Sub vba_dynamic_range_average() 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.Average(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.Average(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.Average(Rows(iCol)) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub

コメントを追加する

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