【マクロVBA練習問題4】指定したセル・範囲の平均値を計算し、セル番に結果を表示

マクロVBA練習問題




練習問題と内容について

・練習問題の狙い

このシリーズでは課題を元にマクロVBAで実践することでスキルを身につける狙いです。

正直、ソースコード作成については実践あるのみです!

答えのコードについては数例挙げますが、「もっといい答えがある」などの意見があれば

問い合わせから連絡ください!

 

こんな問題を作ってほしいなどの意見もお待ちしております!

・練習問題4について

こちらはマクロVBAの初歩的な知識になります。

指定したセル・範囲の平均値を計算し、セルに結果を表示する問題となります。
それでは頑張っていきましょう!

練習問題の内容と動作説明

問題内容

セル番地D1からD5までの平均値を計算し、セル番地E1に結果を表示する

動作説明

VBAを使用して、セル番地D1からD5までの値の平均値を計算し、その結果をセル番地E1に表示します。
具体的には、セル番地D1からD5までの値を取得し、それらの値の平均を計算してセル番地E1に表示する必要があります。

 

ヒント


この問題では、セル番地D1からD5までの値の平均を計算し、セル番地E1に結果を表示する必要があります。
以下のヒントを参考にして解答コードを作成してみてください。

・ヒントその1

平均値を計算するためには、取得した値を合計し、セルの数で割る必要があります。ループを使用してセルの値を合計する方法や、WorksheetFunctionオブジェクトのAverageメソッドを使用する方法があります。


WorksheetFunctionで平均値を求めるためには、VBAの組み込み関数であるWorksheetFunction.averageを使用します。
例えば、averageValue = WorksheetFunction.average(Range(“D1:D5”))というように、
average関数を使ってセル範囲内の平均値を取得できます。

・ヒントその2

セルに値を表示するためには、Rangeオブジェクトを使用します。
セル番地を指定して該当するセルオブジェクトを取得し、Valueプロパティを使用して値を設定します。

セル範囲を指定するには、Range(“D1:D5”)というように範囲の開始セルと終了セルを指定します。

・ヒントその3   (参考)

計算結果をセルに表示するには、Rangeオブジェクトを使用します。
セル番地を指定して該当するセルオブジェクトを取得し、Valueプロパティを使用して値を設定します。

例えば、指定セル.Value = 入力したい文字で文字の入力が可能です。
ちなみに省略しても機能します!

これらのヒントを参考にして、解答コードを作成してみてください。

 

最新・便利な機能を搭載したExcel・officeを試しませんか?
Excel 2013以下を使用している方はサポートが終了しているので注意が必要です!
【最新2023年】Excel・Officeの価格比較!あなたに合ったオススメの製品の選定方法から購入 ► 独学エクセル塾 (dokugakuexcel.com)
 

 

解答コード

では回答を見ていきましょう!

・回答その①

Sub Exercise5to1()
Dim total As Double
Dim averageValue As Double
Dim cycle As Long

For cycle = 1 To 5 Step 1
total = total + Cells(cycle, 4)
Next cycle

averageValue = total / 5
Range(“E1”).Value = averageValue

End Sub

上記のコードは、セル番地D1からD5までの値の平均値を計算し、その結果をセル番地E1に表示するVBAのマクロです。

解答コードでは、totalとaverageValueという変数を宣言し、totalにセル番地D1からD5の合計値を代入します。
その後、averageValueにtotalをセルの数である5で割った値を代入します。

最後に、Range(“E1”).Value = averageValueという行で、変数averageValueの値をセル番地E1に表示しています。

Sub 繰り返し動作()
 Dim 変数 As Long

   For 変数 = 開始値 To 終わり値 Step 1回で進む数
       ‘ここに処理プログラム
   Next 変数
End Sub

 

・回答その②

Sub Exercise5to2()
Dim averageValue

averageValue = WorksheetFunction.average(Range(“D1:D5”))
Range(“E1”).Value = averageValue

End Sub

解答コードでは、まずaverageValueという変数を宣言し、WorksheetFunction.average関数を使ってセル範囲の合計値を取得します。

Application.WorksheetFunction.average(平均を求めたい範囲)

取得した平均値を変数averageValueに代入し、最後にRange(“E1”).Valueにその値を表示します。

 


必要な知識

この問題を解くためには、以下の基本的な知識が必要です。

セルへのアクセス方法

VBAでは、RangeオブジェクトやCellsオブジェクトを使用してセルへアクセスします。Rangeオブジェクトは、セルの範囲を指定する際に使用されます。例えば、Range(“A1”)はセル番地A1を指定します。Cellsオブジェクトは、行番号と列番号を指定してセルにアクセスする際に使用されます。例えば、Cells(1, 1)はセル番地A1を指定します。

セルの値の取得と設定

セルの値を取得するには、Valueプロパティを使用します。例えば、Range(“A1”).ValueやCells(1, 1).Valueはセルの値を取得します。
セルの値を設定するにも、同様にValueプロパティを使用します。

例えば、Range(“A1”).Value = 10やCells(1, 1).Value = “Hello”といった形でセルに値を設定します。

下記参考記事で紹介しています!

変数の宣言と演算

VBAでは、変数を宣言して使用します。変数はDimステートメントを使用して宣言します。

例えば、Dim total As Doubleとすると、totalという名前の変数をDouble型で宣言します。
演算においては、四則演算や比較演算子を使用します。例えば、total = total + 1とすると、totalの値に1を加えて再代入します。

平均の計算

平均値を求めるためには、WorksheetFunctionが必要です。

下記参考記事で紹介しています!

ループ構造

平均値を求めるために、セル範囲内の各セルを順番にチェックするループ構造が必要です。
For Nextループを使った反復処理や、Forループを使ったカウンターを利用した反復処理について理解しておくと良いでしょう。

これらの知識を応用して、問題を解くためのコードを作成しましょう。

 

まとめ

練習4では、複数のセルの値を合計し、平均値を計算して別のセルに表示する方法を学びました。

これらの練習問題を通じて、VBAを使用してExcelの操作を自動化する方法を学びました。VBAを使うことで、繰り返し行う作業を自動化したり、複雑な計算や処理を簡単に行ったりすることができます。

練習問題の難易度を徐々に上げていくことで、VBAの基礎をしっかりと学びながら、より高度な操作やプログラミングのテクニックを習得することができます。

次の練習問題に進む前に、現在までの内容を復習し、理解を深めてください。

以上で練習問題4となります。お疲れ様でした!