Vbaを介してexcelで値を平均するにはどうすればよいですか?
Excel では、VBA を使用して、セル範囲または複数の範囲から平均値を計算できます。そして、このチュートリアルでは、それを使用するさまざまな方法を学びます。
WorksheetFunction を使用した VBA の平均
VBA では使用できる関数がいくつかありますが、この目的に特化した関数はありません。これは、平均を取ることができないという意味ではありません。 VBA には、VBA コードで関数を呼び出すのに役立つWorksheetFunctionと呼ばれるプロパティがあります。
A1:A10の範囲の値を平均してみましょう。
- まずワークシート関数のプロパティを入力し、次にリストから AVERAGE 関数を選択します。
- 次に、スプレッドシートに関数を入力するときと同じように、開始括弧を入力する必要があります。
- その後、範囲オブジェクトを使用して、平均を計算したい範囲を参照する必要があります。
- 最後に、右かっこを入力し、関数の戻り値をセル B1 に割り当てます。
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